LP1830973 Angular reversioning script
authorBill Erickson <berickxx@gmail.com>
Mon, 5 Aug 2019 21:58:41 +0000 (17:58 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Mon, 21 Oct 2019 19:36:56 +0000 (15:36 -0400)
Script for rebuilding the dependencies for the Angular app.  This is
useful both for major Angular upgrades or just for simply refreshing the
deps on the current version to ensure everything is up to date, but not
so up to date is breaks Angular compatibility.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Open-ILS/src/eg2/reversion.sh [new file with mode: 0755]

diff --git a/Open-ILS/src/eg2/reversion.sh b/Open-ILS/src/eg2/reversion.sh
new file mode 100755 (executable)
index 0000000..68cbe15
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/bash
+# Author: Bill Erickson <berickxx@gmail.com>
+#
+# Script to rebuild the set of Angular dependencies.
+# 1. Remove node_modules
+# 2. Remove dependencies and devDependencies from package.json
+# 3. Install @angular/core using the requested version of angular.
+# 4. Reinstall dependencies and devDependencies
+#
+# Building in this fashion, where we start with a single Angular package
+# allows the other packages to better determine the version to use.
+# 
+# Script requires 'jq' program (sudo apt-get install jq) for 
+# parsing and manipulating JSON.
+# ----------------------------------------------------------------------------
+set -euo pipefail
+ANGULAR_VERSION="" # Example ^8.0.0
+
+function usage {
+    cat <<USAGE
+        
+        Synopsis:
+
+            $0 -v "^8.0.0"
+
+        Options:
+
+            -v Angular version string
+USAGE
+
+    exit 0;
+}
+
+while getopts "v:h" opt; do
+    case $opt in
+        v) ANGULAR_VERSION="$OPTARG";;
+        h) usage;
+    esac
+done;
+
+if [ -z "$ANGULAR_VERSION" ]; then
+    echo "Angular version required"
+    usage;
+fi;
+
+echo "Removing node_modules"
+rm -rf ./node_modules
+
+echo "Removing package-lock.json"
+rm -f package-lock.json
+
+# Exctract the dependencies from package.json
+DEPS=$(jq '.dependencies | keys' package.json | tr '[],"' ' ' | xargs);
+DEV_DEPS=$(jq '.devDependencies | keys' package.json | tr '[],"' ' ' | xargs);
+
+# Remove deps from package.json
+jq '.devDependencies={} | .dependencies={}' package.json > package.wip.json
+mv package.wip.json package.json
+
+# Start by installing the version of Angular we want to use
+npm install @angular/cli@$ANGULAR_VERSION @angular/core@$ANGULAR_VERSION
+
+# Then let NPM figure out the versioning for the rest.
+
+npm install --save $DEPS
+npm install --save-dev $DEV_DEPS
+
+