From 0e4ffb4b678962d5ff7a4a7d8952033bc84725da Mon Sep 17 00:00:00 2001
From: =?utf8?q?L=C3=A9o=20Andr=C3=A8s?= <leo@ndrs.fr>
Date: Tue, 27 Mar 2018 09:35:12 +0100
Subject: [PATCH] Clean shell scripts (#398)

---
 scripts/build/client.sh               |  6 ++--
 scripts/build/server.sh               |  4 ++-
 scripts/clean/client/dist.sh          |  6 ++--
 scripts/clean/server/dist.sh          |  4 ++-
 scripts/clean/server/test.sh          |  4 ++-
 scripts/client-report.sh              |  6 ++--
 scripts/danger/clean/dev.sh           |  4 ++-
 scripts/danger/clean/modules.sh       |  2 ++
 scripts/danger/clean/prod.sh          |  2 ++
 scripts/dev/client.sh                 |  4 ++-
 scripts/dev/index.sh                  |  4 ++-
 scripts/dev/server.sh                 |  4 ++-
 scripts/generate-api-doc.sh           |  4 ++-
 scripts/generate-code-contributors.sh |  4 ++-
 scripts/help.sh                       |  4 ++-
 scripts/play.sh                       |  6 ++--
 scripts/release.sh                    | 40 +++++++++++++--------------
 scripts/test.sh                       |  8 ++++--
 scripts/travis.sh                     | 12 ++++----
 scripts/upgrade.sh                    | 18 ++++++------
 scripts/watch/client.sh               |  6 ++--
 scripts/watch/server.sh               |  4 ++-
 22 files changed, 97 insertions(+), 59 deletions(-)

diff --git a/scripts/build/client.sh b/scripts/build/client.sh
index e3137df37..8e2004c66 100755
--- a/scripts/build/client.sh
+++ b/scripts/build/client.sh
@@ -1,6 +1,8 @@
-#!/bin/bash
+#!/bin/sh
 
-cd client || exit -1
+set -eu
+
+cd client
 
 rm -rf ./dist ./compiled
 
diff --git a/scripts/build/server.sh b/scripts/build/server.sh
index 811da2154..41b59a212 100755
--- a/scripts/build/server.sh
+++ b/scripts/build/server.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 rm -rf ./dist
 
diff --git a/scripts/clean/client/dist.sh b/scripts/clean/client/dist.sh
index ea6f7d644..19b89de77 100755
--- a/scripts/clean/client/dist.sh
+++ b/scripts/clean/client/dist.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
 
-cd client || exit -1
+set -eu
+
+cd client
 rm -rf compiled/ dist/ dll/
diff --git a/scripts/clean/server/dist.sh b/scripts/clean/server/dist.sh
index be8135b8f..50722cb44 100755
--- a/scripts/clean/server/dist.sh
+++ b/scripts/clean/server/dist.sh
@@ -1,3 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 rm -rf dist/
diff --git a/scripts/clean/server/test.sh b/scripts/clean/server/test.sh
index b56021874..7d353e375 100755
--- a/scripts/clean/server/test.sh
+++ b/scripts/clean/server/test.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 for i in $(seq 1 6); do
   dropdb "peertube_test$i"
diff --git a/scripts/client-report.sh b/scripts/client-report.sh
index 586cc2e47..4dd4b418b 100755
--- a/scripts/client-report.sh
+++ b/scripts/client-report.sh
@@ -1,5 +1,7 @@
-#!/bin/bash
+#!/bin/sh
 
-cd client || exit -1
+set -eu
+
+cd client
 
 npm run webpack-bundle-analyzer ./dist/stats.json
diff --git a/scripts/danger/clean/dev.sh b/scripts/danger/clean/dev.sh
index cd8456772..14b45e13b 100755
--- a/scripts/danger/clean/dev.sh
+++ b/scripts/danger/clean/dev.sh
@@ -1,8 +1,10 @@
 #!/bin/bash
 
+set -eu
+
 read -p "This will remove all directories and SQL tables. Are you sure? (y/*) " -n 1 -r
 echo
 
 if [[ "$REPLY" =~ ^[Yy]$ ]]; then
-  NODE_ENV=test npm run ts-node -- --type-check "./scripts/danger/clean/cleaner"
+  NODE_ENV=test npm run ts-node -- --type-check "scripts/danger/clean/cleaner"
 fi
diff --git a/scripts/danger/clean/modules.sh b/scripts/danger/clean/modules.sh
index 99555a693..f59d6b675 100755
--- a/scripts/danger/clean/modules.sh
+++ b/scripts/danger/clean/modules.sh
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+set -eu
+
 read -p "This will remove all node server and client modules. Are you sure? " -n 1 -r
 
 if [[ "$REPLY" =~ ^[Yy]$ ]]; then
diff --git a/scripts/danger/clean/prod.sh b/scripts/danger/clean/prod.sh
index 9103a7944..0675600c4 100755
--- a/scripts/danger/clean/prod.sh
+++ b/scripts/danger/clean/prod.sh
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+set -eu
+
 read -p "This will remove all directories and SQL tables. Are you sure? (y/*) " -n 1 -r
 echo
 
diff --git a/scripts/dev/client.sh b/scripts/dev/client.sh
index 6d4e7000e..ecd934888 100755
--- a/scripts/dev/client.sh
+++ b/scripts/dev/client.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 NODE_ENV=test concurrently -k \
   "npm run watch:client" \
diff --git a/scripts/dev/index.sh b/scripts/dev/index.sh
index 938bf6056..dcbf62d37 100755
--- a/scripts/dev/index.sh
+++ b/scripts/dev/index.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 NODE_ENV=test concurrently -k \
   "npm run watch:client" \
diff --git a/scripts/dev/server.sh b/scripts/dev/server.sh
index 3130f1d87..bfe322ce1 100755
--- a/scripts/dev/server.sh
+++ b/scripts/dev/server.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 if [ ! -f "./client/dist/index.html" ]; then
   echo "client/dist/index.html does not exist, compile client files..."
diff --git a/scripts/generate-api-doc.sh b/scripts/generate-api-doc.sh
index 81b80a0be..7d48db7a5 100755
--- a/scripts/generate-api-doc.sh
+++ b/scripts/generate-api-doc.sh
@@ -1,3 +1,5 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 npm run spectacle-docs -- -t support/doc/api/html support/doc/api/openapi.yaml
diff --git a/scripts/generate-code-contributors.sh b/scripts/generate-code-contributors.sh
index eb94d418d..9c2541cc2 100755
--- a/scripts/generate-code-contributors.sh
+++ b/scripts/generate-code-contributors.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env bash
+#!/bin/sh
+
+set -eu
 
 curl -s https://api.github.com/repos/chocobozzz/peertube/contributors | \
   jq -r 'map("\\\n * [" + .login + "](" + .url + ")") | .[]' | \
diff --git a/scripts/help.sh b/scripts/help.sh
index a822d5d2e..318bc63f5 100755
--- a/scripts/help.sh
+++ b/scripts/help.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 printf "############# PeerTube help #############\n\n"
 printf "npm run ...\n"
diff --git a/scripts/play.sh b/scripts/play.sh
index ac2a10b12..69725da93 100755
--- a/scripts/play.sh
+++ b/scripts/play.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 if [ ! -f "dist/server.js" ]; then
   echo "Missing server file (server.js)."
@@ -7,7 +9,7 @@ fi
 
 max=${1:-3}
 
-for i in $(seq 1 $max); do
+for i in $(seq 1 "$max"); do
   NODE_ENV=test NODE_APP_INSTANCE=$i node dist/server.js &
   sleep 1
 done
diff --git a/scripts/release.sh b/scripts/release.sh
index 8c440975f..6f4da6a29 100755
--- a/scripts/release.sh
+++ b/scripts/release.sh
@@ -1,11 +1,13 @@
 #!/bin/bash
 
+set -eu
+
 shutdown() {
   # Get our process group id
-  PGID=$(ps -o pgid= $$ | grep -o [0-9]*)
+  PGID=$(ps -o pgid= $$ | grep -o "[0-9]*")
 
   # Kill it in a new new process group
-  setsid kill -- -$PGID
+  setsid kill -- -"$PGID"
   exit 0
 }
 
@@ -16,7 +18,7 @@ if [ -z "$1" ]; then
   exit -1
 fi
 
-if [ -z $GITHUB_TOKEN ]; then
+if [ -z "$GITHUB_TOKEN" ]; then
   echo "Need GITHUB_TOKEN env set."
   exit -1
 fi
@@ -33,43 +35,41 @@ zip_name="peertube-$version.zip"
 
 changelog=$(awk -v version="$version" '/## v/ { printit = $2 == version }; printit;' CHANGELOG.md | grep -v "$version" | sed '1{/^$/d}')
 
-echo -e "Changelog will be:\n"
-echo "$changelog"
-echo
+printf "Changelog will be:\n%s\n" "$changelog"
 
 read -p "Are you sure to release? " -n 1 -r
 echo
 if [[ ! $REPLY =~ ^[Yy]$ ]]
 then
-  [[ "$0" = "$BASH_SOURCE" ]] && exit 0
+  exit 0
 fi
 
-cd ./client || exit -1
-npm version --no-git-tag-version --no-commit-hooks $1 || exit -1
+( cd client
+  npm version --no-git-tag-version --no-commit-hooks "$1"
+)
 
-cd ../ || exit -1
-npm version -f --no-git-tag-version --no-commit-hooks $1 || exit -1
+npm version -f --no-git-tag-version --no-commit-hooks "$1"
 
-git commit package.json client/package.json -m "Bumped to version $version" || exit -1
+git commit package.json client/package.json -m "Bumped to version $version"
 git tag -s -a "$version" -m "$version"
 
-npm run build || exit -1
-rm "./client/dist/stats.json" || exit -1
+npm run build
+rm "./client/dist/stats.json"
 
-cd ../ || exit -1
+cd ..
 
-ln -s "PeerTube" "$directory_name" || exit -1
+ln -s "PeerTube" "$directory_name"
 zip -r "PeerTube/$zip_name" "$directory_name/CREDITS.md" "$directory_name/FAQ.md" \
                             "$directory_name/LICENSE" "$directory_name/README.md" \
                             "$directory_name/client/dist/" "$directory_name/client/yarn.lock" \
                             "$directory_name/client/package.json" "$directory_name/config" \
                             "$directory_name/dist" "$directory_name/package.json" \
                             "$directory_name/scripts" "$directory_name/support" \
-                            "$directory_name/tsconfig.json" "$directory_name/yarn.lock" \
-                            || exit -1
-rm "$directory_name" || exit -1
+                            "$directory_name/tsconfig.json" "$directory_name/yarn.lock"
+
+rm "$directory_name"
 
-cd "PeerTube" || exit -1
+cd "PeerTube"
 
 git push origin --tag
 
diff --git a/scripts/test.sh b/scripts/test.sh
index ee7f6e875..cf8895365 100755
--- a/scripts/test.sh
+++ b/scripts/test.sh
@@ -1,6 +1,8 @@
-#!/bin/bash
+#!/bin/sh
 
-npm run build:server || exit -1
-npm run travis -- lint || exit -1
+set -eu
+
+npm run build:server
+npm run travis -- lint
 
 mocha --exit --require ts-node/register/type-check --bail server/tests/index.ts
diff --git a/scripts/travis.sh b/scripts/travis.sh
index ea0dc8699..79be23493 100755
--- a/scripts/travis.sh
+++ b/scripts/travis.sh
@@ -1,4 +1,6 @@
-#!/bin/bash
+#!/bin/sh
+
+set -eu
 
 if [ $# -eq 0 ]; then
     echo "Need test suite argument."
@@ -21,9 +23,9 @@ elif [ "$1" = "api-slow" ]; then
     npm run build:server
     mocha --timeout 5000 --exit --require ts-node/register/type-check --bail server/tests/api/index-slow.ts
 elif [ "$1" = "lint" ]; then
-    cd client || exit -1
-    npm run lint || exit -1
+    ( cd client
+      npm run lint
+    )
 
-    cd .. || exit -1
-    npm run tslint -- --project ./tsconfig.json -c ./tslint.json server.ts "server/**/*.ts" "shared/**/*.ts" || exit -1
+    npm run tslint -- --project ./tsconfig.json -c ./tslint.json server.ts "server/**/*.ts" "shared/**/*.ts"
 fi
diff --git a/scripts/upgrade.sh b/scripts/upgrade.sh
index bd90ce560..2be7b49df 100755
--- a/scripts/upgrade.sh
+++ b/scripts/upgrade.sh
@@ -1,7 +1,6 @@
-#!/usr/bin/env bash
+#!/bin/sh
 
-# Strict mode
-set -e
+set -eu
 
 # Backup database
 SQL_BACKUP_PATH="/var/www/peertube/backup/sql-peertube_prod-$(date +\"%Y%m%d-%H%M\").bak" 
@@ -11,19 +10,18 @@ pg_dump -U peertube -W -h localhost -F c peertube_prod -f "$SQL_BACKUP_PATH"
 # Get and Display the Latest Version
 VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4)
 echo "Latest Peertube version is $VERSION"
-wget -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" -O /var/www/peertube/versions/peertube-${VERSION}.zip
+wget -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" -O "/var/www/peertube/versions/peertube-${VERSION}.zip"
 cd /var/www/peertube/versions
-unzip -o peertube-${VERSION}.zip
-rm -f peertube-${VERSION}.zip
+unzip -o "peertube-${VERSION}.zip"
+rm -f "peertube-${VERSION}.zip"
 
 # Upgrade Scripts
 rm -rf /var/www/peertube/peertube-latest
-ln -s /var/www/peertube/versions/peertube-${VERSION} /var/www/peertube/peertube-latest
-cd  /var/www/peertube/peertube-latest
+ln -s "/var/www/peertube/versions/peertube-${VERSION}" /var/www/peertube/peertube-latest
+cd /var/www/peertube/peertube-latest
 yarn install --production --pure-lockfile 
 cp /var/www/peertube/peertube-latest/config/default.yaml /var/www/peertube/config/default.yaml
 
 echo "Differences in configuration files..."
-diff /var/www/peertube/versions/peertube-${VERSION}/config/production.yaml.example /var/www/peertube/config/production.yaml
+diff "/var/www/peertube/versions/peertube-${VERSION}/config/production.yaml.example" /var/www/peertube/config/production.yaml
 
-exit 0
diff --git a/scripts/watch/client.sh b/scripts/watch/client.sh
index 2481e2269..710c87037 100755
--- a/scripts/watch/client.sh
+++ b/scripts/watch/client.sh
@@ -1,5 +1,7 @@
-#!/usr/bin/env sh
+#!/bin/sh
 
-cd client || exit -1
+set -eu
+
+cd client
 
 npm run ng -- server --hmr --host 0.0.0.0 --disable-host-check --port 3000
diff --git a/scripts/watch/server.sh b/scripts/watch/server.sh
index 448f69552..42a594d85 100755
--- a/scripts/watch/server.sh
+++ b/scripts/watch/server.sh
@@ -1,4 +1,6 @@
-#!/usr/bin/env sh
+#!/bin/sh
+
+set -eu
 
 NODE_ENV=test concurrently -k \
   "npm run tsc -- --sourceMap && npm run nodemon -- --delay 2 --watch ./dist dist/server" \
-- 
2.25.1