84 lines
2.0 KiB
Bash
84 lines
2.0 KiB
Bash
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
CLIARGUMENTS_FILE=""
|
|
EXECUTABLESOURCEDIR=""
|
|
EXECUTABLETARGETDIR=""
|
|
TITLE=""
|
|
METHODPATCHDIR=""
|
|
PIDFILE=""
|
|
|
|
while [ "$1" != "" ]; do
|
|
case $1 in
|
|
-c | --cli-arguments-file )
|
|
shift
|
|
CLIARGUMENTS_FILE="$1"
|
|
;;
|
|
--executables-source-dir )
|
|
shift
|
|
EXECUTABLESOURCEDIR="$1"
|
|
;;
|
|
--executable-taget-dir )
|
|
shift
|
|
EXECUTABLETARGETDIR="$1"
|
|
;;
|
|
--title )
|
|
shift
|
|
TITLE="$1"
|
|
;;
|
|
--create-no-window )
|
|
shift
|
|
CREATENOWINDOW="$1"
|
|
;;
|
|
-p | --pidfile )
|
|
shift
|
|
PIDFILE="$1"
|
|
;;
|
|
-m | --method-patch-dir )
|
|
shift
|
|
METHODPATCHDIR="$1"
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ -z "/tmp/HotReloadTemp" ] || [ -z "$CLIARGUMENTS_FILE" ] || [ -z "$EXECUTABLESOURCEDIR" ] || [ -z "$EXECUTABLETARGETDIR" ] || [ -z "$TITLE" ] || [ -z "$PIDFILE" ] || [ -z "$METHODPATCHDIR" ] || [ -z "$CREATENOWINDOW" ]; then
|
|
echo "Missing arguments"
|
|
exit 1
|
|
fi
|
|
|
|
CLIARGUMENTS=$(cat "$CLIARGUMENTS_FILE")
|
|
rm "$CLIARGUMENTS_FILE"
|
|
|
|
rm -rf "$METHODPATCHDIR"
|
|
SERVER="$EXECUTABLETARGETDIR/CodePatcherCLI"
|
|
|
|
TERMINALRUNSCRIPT="$EXECUTABLESOURCEDIR/terminal-run.sh"
|
|
sed -i 's/\r//g' "$TERMINALRUNSCRIPT"
|
|
|
|
chmod +x "$TERMINALRUNSCRIPT"
|
|
chmod +x "$SERVER"
|
|
|
|
HAVETERMINAL=""
|
|
"$TERMINALRUNSCRIPT" && HAVETERMINAL="yes"
|
|
|
|
INTERNALSCRIPT="$EXECUTABLETARGETDIR/hotreload-internal-start"
|
|
|
|
# see doc/linux-system-freeze.org why I put the nice
|
|
|
|
cat << EOF > "$INTERNALSCRIPT"
|
|
#!/bin/sh
|
|
echo \$\$ > "$PIDFILE"
|
|
nice -n 5 "$SERVER" $CLIARGUMENTS || read
|
|
EOF
|
|
|
|
chmod +x "$INTERNALSCRIPT"
|
|
|
|
if [[ -n "$HAVETERMINAL" && "$CREATENOWINDOW" != "True" ]]; then
|
|
"$TERMINALRUNSCRIPT" "$TITLE" "$INTERNALSCRIPT"
|
|
else
|
|
printf "Don't have a terminal to run, printing to unity console instead. Consider hacking:\n%s\n" "$TERMINALRUNSCRIPT"
|
|
exec "$INTERNALSCRIPT"
|
|
fi
|