hotreload-start-script.sh 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/bin/sh
  2. set -e
  3. CLIARGUMENTS_FILE=""
  4. EXECUTABLESOURCEDIR=""
  5. EXECUTABLETARGETDIR=""
  6. TITLE=""
  7. METHODPATCHDIR=""
  8. PIDFILE=""
  9. while [ "$1" != "" ]; do
  10. case $1 in
  11. -c | --cli-arguments-file )
  12. shift
  13. CLIARGUMENTS_FILE="$1"
  14. ;;
  15. --executables-source-dir )
  16. shift
  17. EXECUTABLESOURCEDIR="$1"
  18. ;;
  19. --executable-taget-dir )
  20. shift
  21. EXECUTABLETARGETDIR="$1"
  22. ;;
  23. --title )
  24. shift
  25. TITLE="$1"
  26. ;;
  27. --create-no-window )
  28. shift
  29. CREATENOWINDOW="$1"
  30. ;;
  31. -p | --pidfile )
  32. shift
  33. PIDFILE="$1"
  34. ;;
  35. -m | --method-patch-dir )
  36. shift
  37. METHODPATCHDIR="$1"
  38. ;;
  39. esac
  40. shift
  41. done
  42. if [ -z "/tmp/HotReloadTemp" ] || [ -z "$CLIARGUMENTS_FILE" ] || [ -z "$EXECUTABLESOURCEDIR" ] || [ -z "$EXECUTABLETARGETDIR" ] || [ -z "$TITLE" ] || [ -z "$PIDFILE" ] || [ -z "$METHODPATCHDIR" ] || [ -z "$CREATENOWINDOW" ]; then
  43. echo "Missing arguments"
  44. exit 1
  45. fi
  46. CLIARGUMENTS=$(cat "$CLIARGUMENTS_FILE")
  47. rm "$CLIARGUMENTS_FILE"
  48. rm -rf "$METHODPATCHDIR"
  49. SERVER="$EXECUTABLETARGETDIR/CodePatcherCLI"
  50. TERMINALRUNSCRIPT="$EXECUTABLESOURCEDIR/terminal-run.sh"
  51. sed -i 's/\r//g' "$TERMINALRUNSCRIPT"
  52. chmod +x "$TERMINALRUNSCRIPT"
  53. chmod +x "$SERVER"
  54. HAVETERMINAL=""
  55. "$TERMINALRUNSCRIPT" && HAVETERMINAL="yes"
  56. INTERNALSCRIPT="$EXECUTABLETARGETDIR/hotreload-internal-start"
  57. # see doc/linux-system-freeze.org why I put the nice
  58. cat << EOF > "$INTERNALSCRIPT"
  59. #!/bin/sh
  60. echo \$\$ > "$PIDFILE"
  61. nice -n 5 "$SERVER" $CLIARGUMENTS || read
  62. EOF
  63. chmod +x "$INTERNALSCRIPT"
  64. if [[ -n "$HAVETERMINAL" && "$CREATENOWINDOW" != "True" ]]; then
  65. "$TERMINALRUNSCRIPT" "$TITLE" "$INTERNALSCRIPT"
  66. else
  67. printf "Don't have a terminal to run, printing to unity console instead. Consider hacking:\n%s\n" "$TERMINALRUNSCRIPT"
  68. exec "$INTERNALSCRIPT"
  69. fi