diff options
Diffstat (limited to 'Biz/Bild/ShellHook.sh')
-rw-r--r-- | Biz/Bild/ShellHook.sh | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Biz/Bild/ShellHook.sh b/Biz/Bild/ShellHook.sh new file mode 100644 index 0000000..75a0842 --- /dev/null +++ b/Biz/Bild/ShellHook.sh @@ -0,0 +1,98 @@ +function help() { + echo "" + echo "bizdev" | figlet | lolcat + echo "" + echo " bild compile code" + echo " deps manage dependencies with niv" + echo " ghci start ghci with correct options" + echo " help show this message" + echo " hero compile and start a dev server for herocomics.app" + echo " lint auto-lint all changed files" + echo " pie product improvement engine" + echo " push send a namespace to the cloud" + echo " ship lint, bild, and push one (or all) namespace(s)" +} + +function bild() { + runghc Biz.Bild $@ +} + +function deps() { + niv --sources-file $BIZ_ROOT/Biz/Bild/Sources.json $@ +} + +alias ghci="ghci -i$BIZ_ROOT -ghci-script $BIZ_ROOT/.ghci" + +function hero() { + export HERO_PORT=3000 + export HERO_KEEP=$BIZ_ROOT/_/keep + export HERO_SKEY=$BIZ_ROOT/_/skey + bild="runghc Biz.Bild" + if [[ ! -z "${IN_NIX_SHELL}" ]] + then + out="_/bild/dev" + # in dev mode, mmc.js is a directory of js assets + export HERO_NODE=$BIZ_ROOT/$out/static/mmc.js + rg --files \ + | entr -rcs \ + "$bild Hero.Host.hs && $bild Hero.Node.hs && $out/bin/mmc" + else + out="_/bild/nix" + export HERO_NODE=$BIZ_ROOT/$out/Hero.Node/static + rg --files \ + | entr -rcs \ + "$bild Hero.Host && $bild Hero.Node && $out/Hero.Host/bin/mmc" + fi +} + +function lint() { + alias lint=$BIZ_ROOT/Biz/lint.py +} + +function pie() { + runghc Biz.Pie $@ +} + +# TODO: convert to haskell +function push() { + prefix=$(echo $PWD | sed -e "s|^$BIZ_ROOT/*||g" -e "s|/|.|g") + if [[ "$prefix" == "" ]] + then + target="$1" + else + target="$prefix.$1" + fi + what=$(realpath "$BIZ_ROOT/_/bild/$target") + # hack: get the domain from the activation script. there does not seem + # to be a way to get it from nix-instantiate + where=$(rg -r '$2' -e '(domainname ")(.*)(")' "$what/activate") + nix copy --to ssh://root@$where $what + ssh root@$where $what/bin/switch-to-configuration switch + ssh root@$where nix-env --profile /nix/var/nix/profiles/system --set $what +} + +# TODO: convert to haskell +function ship() { + set -ex + $BIZ_ROOT/Biz/lint.py + stuff=(${1}) + if [[ ${#stuff[@]} -eq 0 ]] + then + stuff=( + Biz.Cloud + Biz.Dev + Que.Prod + Hero.Prod + ) + fi + for thing in ${stuff[@]} + do + bild $thing + done + for thing in ${stuff[@]} + do + push $thing + done +} + +help |