diff options
Diffstat (limited to 'nix/shellHook.sh')
-rw-r--r-- | nix/shellHook.sh | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/nix/shellHook.sh b/nix/shellHook.sh new file mode 100644 index 0000000..035c450 --- /dev/null +++ b/nix/shellHook.sh @@ -0,0 +1,85 @@ +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 " 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/nix/sources.json $@ +} + +function ghci() { + ghci -i$BIZ_ROOT -ghci-script "$BIZ_ROOT/.ghci" +} + +function hero() { + out="_bild/nix" + export HERO_PORT=3000 + export HERO_NODE=$BIZ_ROOT/$out/Hero.Node/static + export HERO_KEEP=$BIZ_ROOT/_keep + export HERO_SKEY=$BIZ_ROOT/_skey + b="runghc Biz.Bild" + rg --files \ + | entr -rcs \ + "$b Hero.Host && $b Hero.Node && $out/Hero.Host/bin/mmc" +} + +function lint() { + alias lint=$BIZ_ROOT/Biz/lint.py +} + +# 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 |