From 198d8ff061f0c1c756a1311297e7b9f042477c23 Mon Sep 17 00:00:00 2001 From: Dan Vargas Date: Tue, 12 Oct 2021 11:59:49 -0500 Subject: [PATCH] improve piston shell script - fix portability & using piston within a symlink - only install cli npm modules on update or first use - allow building packages with custom builder - fix all shellchecks except SC2164 --- piston | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/piston b/piston index 90d47ed..e6cc13e 100755 --- a/piston +++ b/piston @@ -1,7 +1,10 @@ #!/usr/bin/env bash -cd "$(dirname "$0")" -PISTON_ENV=$(cat .piston_env || echo dev) +EXECUTION_PATH="$PWD" +PISTON_PATH="$(dirname "$(realpath "$0")")" + +cd "$PISTON_PATH" +PISTON_ENV=$(cat .piston_env 2> /dev/null || echo dev) docker_compose(){ if [ -f "docker-compose.$PISTON_ENV.yaml" ]; then @@ -32,13 +35,14 @@ case $1 in echo echo "Development Commands:" - if [ $PISTON_ENV == dev ]; then + if [ "$PISTON_ENV" == dev ]; then - echo " clean-pkgs Clean any package build artifacts on disk" - echo " clean-repo Remove all packages from local repo" - echo " build-pkg Build a package" - echo " rebuild Build and restart the docker container" - echo " lint Lint the codebase using prettier" + echo " clean-pkgs Clean any package build artifacts on disk" + echo " clean-repo Remove all packages from local repo" + echo " list-pkgs Lists all packages that can be built" + echo " build-pkg [builder] Build a package [with desired builder image]" + echo " rebuild Build and restart the docker container" + echo " lint Lint the codebase using prettier" else @@ -56,7 +60,7 @@ case $1 in restart) docker_compose restart ;; start) rm -f .git/hooks/pre-commit - ln -s $(realpath $(dirname "$0"))/pre-commit .git/hooks/pre-commit + ln -s "$PISTON_PATH/pre-commit" "$PISTON_PATH/.git/hooks/pre-commit" docker_compose up -d ;; stop) docker_compose down ;; @@ -66,6 +70,7 @@ case $1 in update) git pull + cd cli && npm i > /dev/null && cd - docker_compose pull docker_compose up -d ;; @@ -73,12 +78,15 @@ case $1 in clean-pkgs) git clean -fqXd packages ;; clean-repo) git clean -fqXd repo ;; + list-pkgs) find packages -depth 2 | awk -F/ '$2 && $3{ print $2 "-" $3 }' | column ;; + build-pkg) PKGSLUG="$2-$3" + BUILDER="${4:-piston-repo-builder}" echo "Building $PKGSLUG" echo "Ensuring latest builder image" - docker build repo -t piston-repo-builder - docker run --rm -v "$(realpath $(dirname "$0")):/piston" piston-repo-builder --no-server $PKGSLUG + docker build repo -t "$BUILDER" + docker run --rm -v "$PWD:/piston" "$BUILDER" --no-server "$PKGSLUG" ;; lint) @@ -86,9 +94,8 @@ case $1 in npx prettier --ignore-unknown --write . ;; *) - cd cli - npm i > /dev/null - cd ../ - node cli/index.js "$@" - ;; + [ -d ./cli/node_modules ] || npm i > /dev/null + cd "$EXECUTION_PATH" + node "${PISTON_PATH}/cli/index.js" "$@" + ;; esac