Now the file data/core/start.lua no longer exists but it is automatically generated by meson. Ensure the file is copied when running locally.
122 lines
2.4 KiB
Bash
Executable File
122 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -o errexit
|
|
|
|
# accept argument in the form
|
|
github_raw_content () {
|
|
echo "https://raw.githubusercontent.com/$1"
|
|
}
|
|
|
|
option_portable=off
|
|
option_copy=on
|
|
pargs=()
|
|
plugins=()
|
|
while [[ "$#" -gt 0 ]]; do
|
|
case $1 in
|
|
-portable)
|
|
option_portable=on
|
|
;;
|
|
-keep)
|
|
option_copy=off
|
|
;;
|
|
-plugin=*)
|
|
# should be like -plugin=franko/lite-plugins/master/plugins/autowrap.lua
|
|
plugins+=("${1#-plugin=}")
|
|
;;
|
|
-global)
|
|
option_global=on
|
|
;;
|
|
-*)
|
|
echo "error: unknown option \"$1\""
|
|
exit 1
|
|
;;
|
|
*)
|
|
pargs+=("$1")
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ "${#pargs[@]}" -lt 1 ]; then
|
|
echo "usage: $0 [options] <build-dir>"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$OSTYPE" == "msys"* || "$OSTYPE" == "mingw"* ]]; then
|
|
run_windows=yes
|
|
fi
|
|
|
|
rundir=".run"
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
bindir="$rundir"
|
|
datadir="$rundir"
|
|
elif [ "$option_portable" == on ]; then
|
|
bindir="$rundir"
|
|
datadir="$rundir/data"
|
|
else
|
|
bindir="$rundir/bin"
|
|
datadir="$rundir/share/lite-xl"
|
|
fi
|
|
|
|
userdir="$(realpath "$rundir")"
|
|
builddir="${pargs[0]}"
|
|
|
|
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-xl.exe" "$bindir"
|
|
else
|
|
cp "$builddir/src/lite-xl" "$bindir"
|
|
fi
|
|
mkdir -p "$datadir/core"
|
|
cp "$builddir/start.lua" "$datadir/core"
|
|
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-xl ${pargs[@]:1}\""
|
|
exec "$bindir/lite-xl" "${pargs[@]:1}"
|
|
else
|
|
echo "running \"lite-xl ${pargs[@]:1}\" with local HOME"
|
|
if [ ! -z ${run_windows+x} ]; then
|
|
USERPROFILE="$userdir" exec "$bindir/lite-xl" "${pargs[@]:1}"
|
|
else
|
|
HOME="$userdir" exec "$bindir/lite-xl" "${pargs[@]:1}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
github_raw_content () {
|
|
echo "https://raw.githubusercontent.com/$1"
|
|
}
|
|
|
|
fetch_plugins () {
|
|
for name in "$@"; do
|
|
local url="$(github_raw_content "$name")"
|
|
local modname="${url##*/}"
|
|
if [ "$modname" == init.lua ]; then
|
|
local m1="${name#*/}"
|
|
modname="${m1%%/*}.lua"
|
|
fi
|
|
echo "installed $name as $modname from $url"
|
|
curl --insecure -L "$url" -o "$datadir/plugins/${modname}"
|
|
done
|
|
}
|
|
|
|
if [ $option_copy == on ]; then
|
|
build_lite
|
|
copy_lite_build
|
|
fi
|
|
fetch_plugins "${plugins[@]}"
|
|
run_lite
|