Merge branch 'master' into eg33
[sitka/sitka-tools.git] / deployment / deployfile.sh
index 7aed86e..fec4a76 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-_ProdServers=" app1-1 app1-2 app2-1 app2-2 app3-1 app3-2 stanns sip2 bibc-prod"
+_ProdServers=" app1 app2 app3 app4 utility1 utility2 sip2 bibc-prod"
 
 usage()
 {
@@ -16,12 +16,13 @@ OPTIONS:
   -u    Username to use when logging into remote server; if not provided, defaults to current user
   -b    Backup flag (optional); creates a backup instead of overwriting file on remote server
   -P    Auto add all production machines to host list
+  -x    Do not warn when extra build steps are required
   -h    Print this message and exit
   -v    Verbose output - echo parameters to stdout
 EOF
 }
 
-while getopts ":f:p:u:bdPvh" opt
+while getopts ":f:p:u:bdPxvh" opt
 do
   case $opt in
     f ) FILE=$OPTARG;;
@@ -30,6 +31,7 @@ do
     u ) USER=$OPTARG;;
     b ) BACKUP="-b --suffix=.`date +%Y%m%d%H%M`";;
     P ) PROD="P";;
+    x ) SKIP_BUILD_CHECK="x";;
     v ) VERBOSE="v";;
     h ) usage && exit 0;;
   esac
@@ -42,6 +44,16 @@ then
   exit 1
 fi
 
+if [[ -z "$SKIP_BUILD_CHECK" ]] ; then
+  if [[ $FILE = *Open-ILS/web/js/ui/default/staff* ]] ; then
+    echo "It looks like you are trying to deploy Evergreen web client JS."
+    echo "In EG 3.1+ and master, you must build JS before copying into place."
+    echo "After making changes, run 'npm run build' before deploying."
+    echo "(Re-run this script with the -x flag to skip this warning.)"
+    exit 1
+  fi
+fi
+
 # attempt to determine the remote destination path automatically
 if [[ -n "$AUTOPATH" ]] && [[ -z "$DEST" ]]
 then
@@ -55,7 +67,7 @@ then
 
   # perl
   if [ "$FILE" == "$AUTODEST" ]; then
-    AUTODEST=$(printf '%s' "$FILE" | sed 's|^.*Open-ILS/src/perlmods/lib/\(.*\)$|/usr/local/share/perl/5.14.2/\1|')
+    AUTODEST=$(printf '%s' "$FILE" | sed 's|^.*Open-ILS/src/perlmods/lib/\(.*\)$|/usr/local/share/perl/5.22.1/\1|')
   fi
 
   # web
@@ -80,8 +92,10 @@ fi
 if [[ -z "$USER" ]]
 then
   SSH="ssh"
+  RSYNC_OPTS="-avz"
 else
   SSH="ssh -l${USER}"
+  RSYNC_OPTS="-rlpD --chown=${USER}:${USER}"
 fi
 
 if [[ -z "$PROD" ]]
@@ -96,7 +110,9 @@ for HOST in $_hosts
 do
   RSYNC_DEST="${HOST}:${DEST}"
   if [[ -z "$VERBOSE" ]]; then
+    echo "deploying to ${HOST}"
+  else
     echo -e "$HOST:\n\tFILE=$FILE\n\tDEST=$DEST\n\tUSER=$USER\n\tBACKUP=$BACKUP\n\tSSH=$SSH\n\tRSYNC_DEST=$RSYNC_DEST\n\tAUTOPATH=$AUTOPATH\n\tAUTODEST=$AUTODEST\n"
   fi
-  rsync -e"${SSH}" $BACKUP -avz $FILE $RSYNC_DEST
+  rsync -e"${SSH}" $BACKUP $RSYNC_OPTS $FILE $RSYNC_DEST
 done