aboutsummaryrefslogtreecommitdiff
path: root/dev-utils/run-plugin
blob: ee950b0d4934529bd73001ad6b5c6a84701db9e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/bash

set -o errexit

option_copy=on
pargs=()
while [[ "$#" -gt 0 ]]; do
  case $1 in
    -keep)
    option_copy=off
    ;;
    -global)
    option_global=on
    ;;
    -*)
    echo "error: unknown option \"$1\""
    exit 1
    ;;
    *)
    pargs+=("$1")
    ;;
  esac
  shift
done

if [ "${#pargs[@]}" -lt 3 ]; then
  echo "usage: $0 [options] <plugin-dir> <plugin-name> <build-dir>"
  exit 1
fi

plugin_dir="${pargs[0]}"
plugin="${pargs[1]}"

if [[ "$OSTYPE" == "msys"* || "$OSTYPE" == "mingw"* ]]; then
  run_windows=yes
fi

rundir=".run"
bindir="$rundir/bin"
datadir="$rundir/share/lite-xl"

userdir="$(realpath "$rundir")"
builddir="${pargs[2]}"

build_lite () {
  echo "running ninja"
  ninja -C "$builddir"
}

copy_lite_build () {
  echo "copying lite executable and data"
  rm -fr "$rundir"
  mkdir -p "$bindir" "$datadir"
  if [ ! -z ${run_windows+x} ]; then
    cp "$builddir/src/lite.exe" "$bindir"
  else
    cp "$builddir/src/lite" "$bindir"
  fi
  for module_name in core plugins colors fonts; do
    cp -r "data/$module_name" "$datadir"
  done
}

run_lite () {
  if [ ! -z ${option_global+x} ]; then
    echo "running \"lite ${pargs[@]:3}\""
    exec "$bindir/lite" "${pargs[@]:3}"
  else
    echo "running \"lite ${pargs[@]:3}\" with local HOME"
    if [ ! -z ${run_windows+x} ]; then
      USERPROFILE="$userdir" exec "$bindir/lite" "${pargs[@]:3}"
    else
      HOME="$userdir" exec "$bindir/lite" "${pargs[@]:3}"
    fi
  fi
}

copy_plugin () {
  echo "-- lite-xl 1.16" | cat - "$plugin_dir/$plugin.lua" > "$datadir/plugins/$plugin.lua"
}

if [ $option_copy == on ]; then
  build_lite
  copy_lite_build
fi
copy_plugin
run_lite