scripts.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. package defaults
  2. var (
  3. PrepScript = `#!/bin/bash
  4. set -eu
  5. # set defaults
  6. #amesPort="34343"
  7. #httpPort="80"
  8. loom="31"
  9. devMode="False"
  10. # Find the first directory and start urbit with the ship therein
  11. dirnames="*/"
  12. dirs=( $dirnames )
  13. dirname=''${dirnames[0]}
  14. # Patp checker
  15. check_patp() {
  16. patp="$1"
  17. pre="dozmarbinwansamlitsighidfidlissogdirwacsabwissibrigsoldopmodfoglidhopdardorlorhodfolrintogsilmirholpaslacrovlivdalsatlibtabhanticpidtorbolfosdotlosdilforpilramtirwintadbicdifrocwidbisdasmidloprilnardapmolsanlocnovsitnidtipsicropwitnatpanminritpodmottamtolsavposnapnopsomfinfonbanmorworsipronnorbotwicsocwatdolmagpicdavbidbaltimtasmalligsivtagpadsaldivdactansidfabtarmonranniswolmispallasdismaprabtobrollatlonnodnavfignomnibpagsopralbilhaddocridmocpacravripfaltodtiltinhapmicfanpattaclabmogsimsonpinlomrictapfirhasbosbatpochactidhavsaplindibhosdabbitbarracparloddosbortochilmactomdigfilfasmithobharmighinradmashalraglagfadtopmophabnilnosmilfopfamdatnoldinhatnacrisfotribhocnimlarfitwalrapsarnalmoslandondanladdovrivbacpollaptalpitnambonrostonfodponsovnocsorlavmatmipfip"
  18. suf="zodnecbudwessevpersutletfulpensytdurwepserwylsunrypsyxdyrnuphebpeglupdepdysputlughecryttyvsydnexlunmeplutseppesdelsulpedtemledtulmetwenbynhexfebpyldulhetmevruttylwydtepbesdexsefwycburderneppurrysrebdennutsubpetrulsynregtydsupsemwynrecmegnetsecmulnymtevwebsummutnyxrextebfushepbenmuswyxsymselrucdecwexsyrwetdylmynmesdetbetbeltuxtugmyrpelsyptermebsetdutdegtexsurfeltudnuxruxrenwytnubmedlytdusnebrumtynseglyxpunresredfunrevrefmectedrusbexlebduxrynnumpyxrygryxfeptyrtustyclegnemfermertenlusnussyltecmexpubrymtucfyllepdebbermughuttunbylsudpemdevlurdefbusbeprunmelpexdytbyttyplevmylwedducfurfexnulluclennerlexrupnedlecrydlydfenwelnydhusrelrudneshesfetdesretdunlernyrsebhulrylludremlysfynwerrycsugnysnyllyndyndemluxfedsedbecmunlyrtesmudnytbyrsenwegfyrmurtelreptegpecnelnevfes"
  19. [[ "${patp:0:1}" == "~" ]] && patp="${patp:1}"
  20. patp_arr=(${patp//-/ })
  21. [[ "${patp:0:3}" == "doz" ]] && return
  22. if [[ ${#patp} -eq 3 ]]; then
  23. [[ $suf == *"$patp"* ]] && echo "$patp" && return
  24. else
  25. for p in "${patp_arr[@]}"; do
  26. [[ ${#p} -eq 6 && $pre == *"${p:0:3}"* && $suf == *"${p:3:3}"* ]] || return
  27. done
  28. echo "$patp"
  29. fi
  30. }
  31. # Find a directory with a valid patp
  32. for patp in *; do
  33. if [[ -d $patp ]]; then
  34. result=$(echo $(check_patp "$patp"))
  35. if [[ -n $result ]]; then
  36. dirname=$result
  37. break
  38. fi
  39. fi
  40. done
  41. # check args
  42. for i in "$@"
  43. do
  44. case $i in
  45. --loom=*)
  46. loom="${i#*=}"
  47. shift
  48. ;;
  49. --dirname=*)
  50. dirname="${i#*=}"
  51. shift
  52. esac
  53. done
  54. # If the container is not started with the -i flag
  55. # then STDIN will be closed and we need to start
  56. # Urbit/vere with the -t flag.
  57. ttyflag=""
  58. if [ ! -t 0 ]; then
  59. echo "Running with no STDIN"
  60. ttyflag="-t"
  61. fi
  62. file="${dirname}/.vere.lock"
  63. if [ -e "$file" ]; then
  64. content=$(cat "$file")
  65. if [ "$content" == "1" ]; then
  66. rm "$file"
  67. echo "File .vere.lock containing PID 1 has been deleted."
  68. fi
  69. fi
  70. urbit prep --loom $loom $dirname`
  71. StartScript = `#!/bin/bash
  72. set -eu
  73. # set defaults
  74. amesPort="34343"
  75. httpPort="80"
  76. loom="31"
  77. devMode="False"
  78. # Find the first directory and start urbit with the ship therein
  79. dirnames="*/"
  80. dirs=( $dirnames )
  81. dirname=''${dirnames[0]}
  82. # Patp checker
  83. check_patp() {
  84. patp="$1"
  85. pre="dozmarbinwansamlitsighidfidlissogdirwacsabwissibrigsoldopmodfoglidhopdardorlorhodfolrintogsilmirholpaslacrovlivdalsatlibtabhanticpidtorbolfosdotlosdilforpilramtirwintadbicdifrocwidbisdasmidloprilnardapmolsanlocnovsitnidtipsicropwitnatpanminritpodmottamtolsavposnapnopsomfinfonbanmorworsipronnorbotwicsocwatdolmagpicdavbidbaltimtasmalligsivtagpadsaldivdactansidfabtarmonranniswolmispallasdismaprabtobrollatlonnodnavfignomnibpagsopralbilhaddocridmocpacravripfaltodtiltinhapmicfanpattaclabmogsimsonpinlomrictapfirhasbosbatpochactidhavsaplindibhosdabbitbarracparloddosbortochilmactomdigfilfasmithobharmighinradmashalraglagfadtopmophabnilnosmilfopfamdatnoldinhatnacrisfotribhocnimlarfitwalrapsarnalmoslandondanladdovrivbacpollaptalpitnambonrostonfodponsovnocsorlavmatmipfip"
  86. suf="zodnecbudwessevpersutletfulpensytdurwepserwylsunrypsyxdyrnuphebpeglupdepdysputlughecryttyvsydnexlunmeplutseppesdelsulpedtemledtulmetwenbynhexfebpyldulhetmevruttylwydtepbesdexsefwycburderneppurrysrebdennutsubpetrulsynregtydsupsemwynrecmegnetsecmulnymtevwebsummutnyxrextebfushepbenmuswyxsymselrucdecwexsyrwetdylmynmesdetbetbeltuxtugmyrpelsyptermebsetdutdegtexsurfeltudnuxruxrenwytnubmedlytdusnebrumtynseglyxpunresredfunrevrefmectedrusbexlebduxrynnumpyxrygryxfeptyrtustyclegnemfermertenlusnussyltecmexpubrymtucfyllepdebbermughuttunbylsudpemdevlurdefbusbeprunmelpexdytbyttyplevmylwedducfurfexnulluclennerlexrupnedlecrydlydfenwelnydhusrelrudneshesfetdesretdunlernyrsebhulrylludremlysfynwerrycsugnysnyllyndyndemluxfedsedbecmunlyrtesmudnytbyrsenwegfyrmurtelreptegpecnelnevfes"
  87. [[ "${patp:0:1}" == "~" ]] && patp="${patp:1}"
  88. patp_arr=(${patp//-/ })
  89. [[ "${patp:0:3}" == "doz" ]] && return
  90. if [[ ${#patp} -eq 3 ]]; then
  91. [[ $suf == *"$patp"* ]] && echo "$patp" && return
  92. else
  93. for p in "${patp_arr[@]}"; do
  94. [[ ${#p} -eq 6 && $pre == *"${p:0:3}"* && $suf == *"${p:3:3}"* ]] || return
  95. done
  96. echo "$patp"
  97. fi
  98. }
  99. # Find a directory with a valid patp
  100. for patp in *; do
  101. if [[ -d $patp ]]; then
  102. result=$(echo $(check_patp "$patp"))
  103. if [[ -n $result ]]; then
  104. dirname=$result
  105. break
  106. fi
  107. fi
  108. done
  109. # check args
  110. for i in "$@"
  111. do
  112. case $i in
  113. -p=*|--port=*)
  114. amesPort="${i#*=}"
  115. shift
  116. ;;
  117. --http-port=*)
  118. httpPort="${i#*=}"
  119. shift
  120. ;;
  121. --loom=*)
  122. loom="${i#*=}"
  123. shift
  124. ;;
  125. --dirname=*)
  126. dirname="${i#*=}"
  127. shift
  128. ;;
  129. --devmode=*)
  130. devMode="${i#*=}"
  131. shift
  132. ;;
  133. esac
  134. done
  135. # If the container is not started with the -i flag
  136. # then STDIN will be closed and we need to start
  137. # Urbit/vere with the -t flag.
  138. ttyflag=""
  139. if [ ! -t 0 ]; then
  140. echo "Running with no STDIN"
  141. ttyflag="-t"
  142. fi
  143. # Check if there is a keyfile, if so boot a ship with its name, and then remove the key
  144. if [ -e *.key ]; then
  145. # Get the name of the key
  146. keynames="*.key"
  147. keys=( $keynames )
  148. keyname=''${keys[0]}
  149. mv $keyname /tmp
  150. # Boot urbit with the key, exit when done booting
  151. urbit $ttyflag -w $(basename $keyname .key) -k /tmp/$keyname -p $amesPort -x --http-port $httpPort --loom $loom
  152. # Remove the keyfile for security
  153. rm /tmp/$keyname
  154. rm *.key || true
  155. fi
  156. file="${dirname}/.vere.lock"
  157. if [ -e "$file" ]; then
  158. content=$(cat "$file")
  159. if [ "$content" == "1" ]; then
  160. rm "$file"
  161. echo "File .vere.lock containing PID 1 has been deleted."
  162. fi
  163. fi
  164. if [ $devMode == "True" ]; then
  165. echo "Developer mode: $devMode"
  166. echo "No logs will display"
  167. # Run urbit inside a tmux pane (no logs)
  168. tmux new -d -s urbit "script -q -c 'exec urbit -p $amesPort --http-port $httpPort --loom $loom $dirname' /dev/null"
  169. tmux_pid=$(tmux list-panes -t urbit -F "#{pane_pid}")
  170. while kill -0 "$tmux_pid" 2> /dev/null; do
  171. sleep 3
  172. done
  173. tmux kill-session -t urbit
  174. exit 0
  175. else
  176. urbit $ttyflag -p $amesPort --http-port $httpPort --loom $loom $dirname
  177. fi`
  178. PackScript = `#!/bin/bash
  179. echo "URTH PACK"
  180. set -eu
  181. # set defaults
  182. #amesPort="34343"
  183. #httpPort="80"
  184. loom="31"
  185. devMode="False"
  186. # Find the first directory and start urbit with the ship therein
  187. dirnames="*/"
  188. dirs=( $dirnames )
  189. dirname=''${dirnames[0]}
  190. # Patp checker
  191. check_patp() {
  192. patp="$1"
  193. pre="dozmarbinwansamlitsighidfidlissogdirwacsabwissibrigsoldopmodfoglidhopdardorlorhodfolrintogsilmirholpaslacrovlivdalsatlibtabhanticpidtorbolfosdotlosdilforpilramtirwintadbicdifrocwidbisdasmidloprilnardapmolsanlocnovsitnidtipsicropwitnatpanminritpodmottamtolsavposnapnopsomfinfonbanmorworsipronnorbotwicsocwatdolmagpicdavbidbaltimtasmalligsivtagpadsaldivdactansidfabtarmonranniswolmispallasdismaprabtobrollatlonnodnavfignomnibpagsopralbilhaddocridmocpacravripfaltodtiltinhapmicfanpattaclabmogsimsonpinlomrictapfirhasbosbatpochactidhavsaplindibhosdabbitbarracparloddosbortochilmactomdigfilfasmithobharmighinradmashalraglagfadtopmophabnilnosmilfopfamdatnoldinhatnacrisfotribhocnimlarfitwalrapsarnalmoslandondanladdovrivbacpollaptalpitnambonrostonfodponsovnocsorlavmatmipfip"
  194. suf="zodnecbudwessevpersutletfulpensytdurwepserwylsunrypsyxdyrnuphebpeglupdepdysputlughecryttyvsydnexlunmeplutseppesdelsulpedtemledtulmetwenbynhexfebpyldulhetmevruttylwydtepbesdexsefwycburderneppurrysrebdennutsubpetrulsynregtydsupsemwynrecmegnetsecmulnymtevwebsummutnyxrextebfushepbenmuswyxsymselrucdecwexsyrwetdylmynmesdetbetbeltuxtugmyrpelsyptermebsetdutdegtexsurfeltudnuxruxrenwytnubmedlytdusnebrumtynseglyxpunresredfunrevrefmectedrusbexlebduxrynnumpyxrygryxfeptyrtustyclegnemfermertenlusnussyltecmexpubrymtucfyllepdebbermughuttunbylsudpemdevlurdefbusbeprunmelpexdytbyttyplevmylwedducfurfexnulluclennerlexrupnedlecrydlydfenwelnydhusrelrudneshesfetdesretdunlernyrsebhulrylludremlysfynwerrycsugnysnyllyndyndemluxfedsedbecmunlyrtesmudnytbyrsenwegfyrmurtelreptegpecnelnevfes"
  195. [[ "${patp:0:1}" == "~" ]] && patp="${patp:1}"
  196. patp_arr=(${patp//-/ })
  197. [[ "${patp:0:3}" == "doz" ]] && return
  198. if [[ ${#patp} -eq 3 ]]; then
  199. [[ $suf == *"$patp"* ]] && echo "$patp" && return
  200. else
  201. for p in "${patp_arr[@]}"; do
  202. [[ ${#p} -eq 6 && $pre == *"${p:0:3}"* && $suf == *"${p:3:3}"* ]] || return
  203. done
  204. echo "$patp"
  205. fi
  206. }
  207. # Find a directory with a valid patp
  208. for patp in *; do
  209. if [[ -d $patp ]]; then
  210. result=$(echo $(check_patp "$patp"))
  211. if [[ -n $result ]]; then
  212. dirname=$result
  213. break
  214. fi
  215. fi
  216. done
  217. # check args
  218. for i in "$@"
  219. do
  220. case $i in
  221. # -p=*|--port=*)
  222. # amesPort="${i#*=}"
  223. # shift
  224. # ;;
  225. # --http-port=*)
  226. # httpPort="${i#*=}"
  227. # shift
  228. # ;;
  229. --loom=*)
  230. loom="${i#*=}"
  231. shift
  232. ;;
  233. --dirname=*)
  234. dirname="${i#*=}"
  235. shift
  236. # ;;
  237. # --devmode=*)
  238. # devMode="${i#*=}"
  239. # shift
  240. # ;;
  241. esac
  242. done
  243. # If the container is not started with the -i flag
  244. # then STDIN will be closed and we need to start
  245. # Urbit/vere with the -t flag.
  246. ttyflag=""
  247. if [ ! -t 0 ]; then
  248. echo "Running with no STDIN"
  249. ttyflag="-t"
  250. fi
  251. file="${dirname}/.vere.lock"
  252. if [ -e "$file" ]; then
  253. content=$(cat "$file")
  254. if [ "$content" == "1" ]; then
  255. rm "$file"
  256. echo "File .vere.lock containing PID 1 has been deleted."
  257. fi
  258. fi
  259. urbit pack --loom $loom $dirname`
  260. MeldScript = `#!/bin/bash
  261. echo "URTH MELD"
  262. set -eu
  263. # set defaults
  264. #amesPort="34343"
  265. #httpPort="80"
  266. loom="31"
  267. devMode="False"
  268. # Find the first directory and start urbit with the ship therein
  269. dirnames="*/"
  270. dirs=( $dirnames )
  271. dirname=''${dirnames[0]}
  272. # Patp checker
  273. check_patp() {
  274. patp="$1"
  275. pre="dozmarbinwansamlitsighidfidlissogdirwacsabwissibrigsoldopmodfoglidhopdardorlorhodfolrintogsilmirholpaslacrovlivdalsatlibtabhanticpidtorbolfosdotlosdilforpilramtirwintadbicdifrocwidbisdasmidloprilnardapmolsanlocnovsitnidtipsicropwitnatpanminritpodmottamtolsavposnapnopsomfinfonbanmorworsipronnorbotwicsocwatdolmagpicdavbidbaltimtasmalligsivtagpadsaldivdactansidfabtarmonranniswolmispallasdismaprabtobrollatlonnodnavfignomnibpagsopralbilhaddocridmocpacravripfaltodtiltinhapmicfanpattaclabmogsimsonpinlomrictapfirhasbosbatpochactidhavsaplindibhosdabbitbarracparloddosbortochilmactomdigfilfasmithobharmighinradmashalraglagfadtopmophabnilnosmilfopfamdatnoldinhatnacrisfotribhocnimlarfitwalrapsarnalmoslandondanladdovrivbacpollaptalpitnambonrostonfodponsovnocsorlavmatmipfip"
  276. suf="zodnecbudwessevpersutletfulpensytdurwepserwylsunrypsyxdyrnuphebpeglupdepdysputlughecryttyvsydnexlunmeplutseppesdelsulpedtemledtulmetwenbynhexfebpyldulhetmevruttylwydtepbesdexsefwycburderneppurrysrebdennutsubpetrulsynregtydsupsemwynrecmegnetsecmulnymtevwebsummutnyxrextebfushepbenmuswyxsymselrucdecwexsyrwetdylmynmesdetbetbeltuxtugmyrpelsyptermebsetdutdegtexsurfeltudnuxruxrenwytnubmedlytdusnebrumtynseglyxpunresredfunrevrefmectedrusbexlebduxrynnumpyxrygryxfeptyrtustyclegnemfermertenlusnussyltecmexpubrymtucfyllepdebbermughuttunbylsudpemdevlurdefbusbeprunmelpexdytbyttyplevmylwedducfurfexnulluclennerlexrupnedlecrydlydfenwelnydhusrelrudneshesfetdesretdunlernyrsebhulrylludremlysfynwerrycsugnysnyllyndyndemluxfedsedbecmunlyrtesmudnytbyrsenwegfyrmurtelreptegpecnelnevfes"
  277. [[ "${patp:0:1}" == "~" ]] && patp="${patp:1}"
  278. patp_arr=(${patp//-/ })
  279. [[ "${patp:0:3}" == "doz" ]] && return
  280. if [[ ${#patp} -eq 3 ]]; then
  281. [[ $suf == *"$patp"* ]] && echo "$patp" && return
  282. else
  283. for p in "${patp_arr[@]}"; do
  284. [[ ${#p} -eq 6 && $pre == *"${p:0:3}"* && $suf == *"${p:3:3}"* ]] || return
  285. done
  286. echo "$patp"
  287. fi
  288. }
  289. # Find a directory with a valid patp
  290. for patp in *; do
  291. if [[ -d $patp ]]; then
  292. result=$(echo $(check_patp "$patp"))
  293. if [[ -n $result ]]; then
  294. dirname=$result
  295. break
  296. fi
  297. fi
  298. done
  299. # check args
  300. for i in "$@"
  301. do
  302. case $i in
  303. --loom=*)
  304. loom="${i#*=}"
  305. shift
  306. ;;
  307. --dirname=*)
  308. dirname="${i#*=}"
  309. shift
  310. esac
  311. done
  312. # If the container is not started with the -i flag
  313. # then STDIN will be closed and we need to start
  314. # Urbit/vere with the -t flag.
  315. ttyflag=""
  316. if [ ! -t 0 ]; then
  317. echo "Running with no STDIN"
  318. ttyflag="-t"
  319. fi
  320. file="${dirname}/.vere.lock"
  321. if [ -e "$file" ]; then
  322. content=$(cat "$file")
  323. if [ "$content" == "1" ]; then
  324. rm "$file"
  325. echo "File .vere.lock containing PID 1 has been deleted."
  326. fi
  327. fi
  328. urbit meld --loom $loom $dirname`
  329. )