Revert "scripts: Various shell script cleanups (#4008)"

This reverts commit fba4fd5314.

The series of commits I made for PR #4008 were squashed into a single
commit and rebased. Somewhere along the way a mistake was made in a
merge conflict resolution, resulting in some bad code in
`bin/buildForWindows.sh`. This commit reverts the bad squashed commit.
This commit is contained in:
Richard Hansen 2020-06-01 22:45:11 -04:00
parent 02af7d0c2d
commit 9ffb2ccfb0
5 changed files with 132 additions and 129 deletions

View file

@ -1,23 +1,5 @@
#!/bin/sh #!/bin/sh
pecho() { printf %s\\n "$*"; }
log() { pecho "$@"; }
error() { log "ERROR: $@" >&2; }
fatal() { error "$@"; exit 1; }
is_cmd() { command -v "$@" >/dev/null 2>&1; }
# Move to the folder where ep-lite is installed
cd "$(dirname "$0")"/..
# Is wget installed?
is_cmd wget || fatal "Please install wget"
# Is zip installed?
is_cmd zip || fatal "Please install zip"
# Is zip installed?
is_cmd unzip || fatal "Please install unzip"
=======
#Move to the folder where ep-lite is installed #Move to the folder where ep-lite is installed
cd $(dirname $0) cd $(dirname $0)
@ -47,9 +29,9 @@ hash unzip > /dev/null 2>&1 || {
START_FOLDER=$(pwd); START_FOLDER=$(pwd);
TMP_FOLDER=$(mktemp -d) TMP_FOLDER=$(mktemp -d)
log "create a clean environment in $TMP_FOLDER..." echo "create a clean environment in $TMP_FOLDER..."
cp -ar . "$TMP_FOLDER" cp -ar . $TMP_FOLDER
cd "$TMP_FOLDER" cd $TMP_FOLDER
rm -rf node_modules rm -rf node_modules
rm -f etherpad-lite-win.zip rm -f etherpad-lite-win.zip
@ -57,33 +39,33 @@ rm -f etherpad-lite-win.zip
# making the windows package smaller # making the windows package smaller
export NODE_ENV=production export NODE_ENV=production
log "do a normal unix install first..." echo "do a normal unix install first..."
bin/installDeps.sh || exit 1 bin/installDeps.sh || exit 1
log "copy the windows settings template..." echo "copy the windows settings template..."
cp settings.json.template settings.json cp settings.json.template settings.json
log "resolve symbolic links..." echo "resolve symbolic links..."
cp -rL node_modules node_modules_resolved cp -rL node_modules node_modules_resolved
rm -rf node_modules rm -rf node_modules
mv node_modules_resolved node_modules mv node_modules_resolved node_modules
log "download windows node..." echo "download windows node..."
cd bin cd bin
wget "https://nodejs.org/dist/latest-erbium/win-x86/node.exe" -O ../node.exe wget "https://nodejs.org/dist/latest-erbium/win-x86/node.exe" -O ../node.exe
log "remove git history to reduce folder size" echo "remove git history to reduce folder size"
rm -rf .git/objects rm -rf .git/objects
log "remove windows jsdom-nocontextify/test folder" echo "remove windows jsdom-nocontextify/test folder"
rm -rf "$TMP_FOLDER"/src/node_modules/wd/node_modules/request/node_modules/form-data/node_modules/combined-stream/test rm -rf $TMP_FOLDER/src/node_modules/wd/node_modules/request/node_modules/form-data/node_modules/combined-stream/test
rm -rf "$TMP_FOLDER"/src/node_modules/nodemailer/node_modules/mailcomposer/node_modules/mimelib/node_modules/encoding/node_modules/iconv-lite/encodings/tables rm -rf $TMP_FOLDER/src/node_modules/nodemailer/node_modules/mailcomposer/node_modules/mimelib/node_modules/encoding/node_modules/iconv-lite/encodings/tables
log "create the zip..." echo "create the zip..."
cd "$TMP_FOLDER" cd $TMP_FOLDER
zip -9 -r "$START_FOLDER"/etherpad-lite-win.zip ./* zip -9 -r $START_FOLDER/etherpad-lite-win.zip ./*
log "clean up..." echo "clean up..."
rm -rf "$TMP_FOLDER" rm -rf $TMP_FOLDER
log "Finished. You can find the zip in the Etherpad root folder, it's called etherpad-lite-win.zip" echo "Finished. You can find the zip in the Etherpad root folder, it's called etherpad-lite-win.zip"

View file

@ -1,7 +1,12 @@
#!/bin/sh #!/bin/sh
#Move to the folder where ep-lite is installed #Move to the folder where ep-lite is installed
cd "$(dirname "$0")"/.. cd $(dirname $0)
#Was this script started in the bin folder? if yes move out
if [ -d "../bin" ]; then
cd "../"
fi
#Prepare the environment #Prepare the environment
bin/installDeps.sh || exit 1 bin/installDeps.sh || exit 1

View file

@ -8,12 +8,6 @@ REQUIRED_NODE_MINOR=13
REQUIRED_NPM_MAJOR=5 REQUIRED_NPM_MAJOR=5
REQUIRED_NPM_MINOR=5 REQUIRED_NPM_MINOR=5
pecho() { printf %s\\n "$*"; }
log() { pecho "$@"; }
error() { log "ERROR: $@" >&2; }
fatal() { error "$@"; exit 1; }
is_cmd() { command -v "$@" >/dev/null 2>&1; }
require_minimal_version() { require_minimal_version() {
PROGRAM_LABEL="$1" PROGRAM_LABEL="$1"
VERSION_STRING="$2" VERSION_STRING="$2"
@ -22,37 +16,58 @@ require_minimal_version() {
# Flag -s (--only-delimited on GNU cut) ensures no string is returned # Flag -s (--only-delimited on GNU cut) ensures no string is returned
# when there is no match # when there is no match
DETECTED_MAJOR=$(pecho "$VERSION_STRING" | cut -s -d "." -f 1) DETECTED_MAJOR=$(echo $VERSION_STRING | cut -s -d "." -f 1)
DETECTED_MINOR=$(pecho "$VERSION_STRING" | cut -s -d "." -f 2) DETECTED_MINOR=$(echo $VERSION_STRING | cut -s -d "." -f 2)
[ -n "$DETECTED_MAJOR" ] || fatal "Cannot extract $PROGRAM_LABEL major version from version string \"$VERSION_STRING\"" if [ -z "$DETECTED_MAJOR" ]; then
printf 'Cannot extract %s major version from version string "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" >&2
exit 1
fi
[ -n "$DETECTED_MINOR" ] || fatal "Cannot extract $PROGRAM_LABEL minor version from version string \"$VERSION_STRING\"" if [ -z "$DETECTED_MINOR" ]; then
printf 'Cannot extract %s minor version from version string "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" >&2
exit 1
fi
case "$DETECTED_MAJOR" in case "$DETECTED_MAJOR" in
''|*[!0-9]*) ''|*[!0-9]*)
fatal "$PROGRAM_LABEL major version from \"$VERSION_STRING\" is not a number. Detected: \"$DETECTED_MAJOR\"" printf '%s major version from "%s" is not a number. Detected: "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" "$DETECTED_MAJOR" >&2
exit 1
;; ;;
esac esac
case "$DETECTED_MINOR" in case "$DETECTED_MINOR" in
''|*[!0-9]*) ''|*[!0-9]*)
fatal "$PROGRAM_LABEL minor version from \"$VERSION_STRING\" is not a number. Detected: \"$DETECTED_MINOR\"" printf '%s minor version from "%s" is not a number. Detected: "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" "$DETECTED_MINOR" >&2
exit 1
esac esac
[ "$DETECTED_MAJOR" -gt "$REQUIRED_MAJOR" ] || ([ "$DETECTED_MAJOR" -eq "$REQUIRED_MAJOR" ] && [ "$DETECTED_MINOR" -ge "$REQUIRED_MINOR" ]) \ if [ "$DETECTED_MAJOR" -lt "$REQUIRED_MAJOR" ] || ([ "$DETECTED_MAJOR" -eq "$REQUIRED_MAJOR" ] && [ "$DETECTED_MINOR" -lt "$REQUIRED_MINOR" ]); then
|| fatal "Your $PROGRAM_LABEL version \"$VERSION_STRING\" is too old. $PROGRAM_LABEL $REQUIRED_MAJOR.$REQUIRED_MINOR.x or higher is required." printf 'Your %s version "%s" is too old. %s %d.%d.x or higher is required.\n' "$PROGRAM_LABEL" "$VERSION_STRING" "$PROGRAM_LABEL" "$REQUIRED_MAJOR" "$REQUIRED_MINOR" >&2
exit 1
fi
} }
#Move to the folder where ep-lite is installed #Move to the folder where ep-lite is installed
cd "$(dirname "$0")"/.. cd $(dirname $0)
#Was this script started in the bin folder? if yes move out
if [ -d "../bin" ]; then
cd "../"
fi
#Is node installed? #Is node installed?
#Not checking io.js, default installation creates a symbolic link to node #Not checking io.js, default installation creates a symbolic link to node
is_cmd node || fatal "Please install node.js ( https://nodejs.org )" hash node > /dev/null 2>&1 || {
echo "Please install node.js ( https://nodejs.org )" >&2
exit 1
}
#Is npm installed? #Is npm installed?
is_cmd npm || fatal "Please install npm ( https://npmjs.org )" hash npm > /dev/null 2>&1 || {
echo "Please install npm ( https://npmjs.org )" >&2
exit 1
}
#Check npm version #Check npm version
NPM_VERSION_STRING=$(npm --version) NPM_VERSION_STRING=$(npm --version)
@ -74,12 +89,12 @@ for arg in "$@"; do
done done
#Does a $settings exist? if not copy the template #Does a $settings exist? if not copy the template
if [ ! -f "$settings" ]; then if [ ! -f $settings ]; then
log "Copy the settings template to $settings..." echo "Copy the settings template to $settings..."
cp settings.json.template "$settings" || exit 1 cp settings.json.template $settings || exit 1
fi fi
log "Ensure that all dependencies are up to date... If this is the first time you have run Etherpad please be patient." echo "Ensure that all dependencies are up to date... If this is the first time you have run Etherpad please be patient."
( (
mkdir -p node_modules mkdir -p node_modules
cd node_modules cd node_modules
@ -92,7 +107,7 @@ log "Ensure that all dependencies are up to date... If this is the first time y
} }
#Remove all minified data to force node creating it new #Remove all minified data to force node creating it new
log "Clearing minified cache..." echo "Clearing minified cache..."
rm -f var/minified* rm -f var/minified*
exit 0 exit 0

View file

@ -1,37 +1,39 @@
#!/bin/sh #!/bin/sh
pecho() { printf %s\\n "$*"; }
log() { pecho "$@"; }
error() { log "ERROR: $@" >&2; }
fatal() { error "$@"; exit 1; }
#Move to the folder where ep-lite is installed #Move to the folder where ep-lite is installed
cd "$(dirname "$0")"/.. cd $(dirname $0)
#Was this script started in the bin folder? if yes move out
if [ -d "../bin" ]; then
cd "../"
fi
ignoreRoot=0 ignoreRoot=0
for ARG in "$@"; do for ARG in "$@"
do
if [ "$ARG" = "--root" ]; then if [ "$ARG" = "--root" ]; then
ignoreRoot=1 ignoreRoot=1
fi fi
done done
#Stop the script if it's started as root #Stop the script if it's started as root
if [ "$(id -u)" -eq 0 ] && [ "$ignoreRoot" -eq 0 ]; then if [ "$(id -u)" -eq 0 ] && [ $ignoreRoot -eq 0 ]; then
cat <<EOF >&2 echo "You shouldn't start Etherpad as root!"
You shouldn't start Etherpad as root! echo "Please type 'Etherpad rocks my socks' or supply the '--root' argument if you still want to start it as root"
Please type 'Etherpad rocks my socks' (or restart with the '--root'
argument) if you still want to start it as root:
EOF
printf "> " >&2
read rocks read rocks
[ "$rocks" = "Etherpad rocks my socks" ] || fatal "Your input was incorrect" if [ ! "$rocks" == "Etherpad rocks my socks" ]
then
echo "Your input was incorrect"
exit 1
fi
fi fi
#Prepare the environment #Prepare the environment
bin/installDeps.sh "$@" || exit 1 bin/installDeps.sh "$@" || exit 1
#Move to the node folder and start #Move to the node folder and start
log "Starting Etherpad..." echo "Started Etherpad..."
SCRIPTPATH=$(pwd -P) SCRIPTPATH=$(pwd -P)
exec node "$SCRIPTPATH/node_modules/ep_etherpad-lite/node/server.js" "$@" exec node "$SCRIPTPATH/node_modules/ep_etherpad-lite/node/server.js" "$@"

View file

@ -1,7 +1,6 @@
#!/bin/sh #!/bin/sh
# This script ensures that ep-lite is automatically restarting after #This script ensures that ep-lite is automatically restarting after an error happens
# an error happens
#Handling Errors #Handling Errors
# 0 silent # 0 silent
@ -16,53 +15,53 @@ TIME_BETWEEN_EMAILS=600 # 10 minutes
# DON'T EDIT AFTER THIS LINE # DON'T EDIT AFTER THIS LINE
pecho() { printf %s\\n "$*"; }
log() { pecho "$@"; }
error() { log "ERROR: $@" >&2; }
fatal() { error "$@"; exit 1; }
LAST_EMAIL_SEND=0 LAST_EMAIL_SEND=0
LOG="$1"
#Move to the folder where ep-lite is installed #Move to the folder where ep-lite is installed
cd "$(dirname "$0")"/.. cd $(dirname $0)
#Was this script started in the bin folder? if yes move out
if [ -d "../bin" ]; then
cd "../"
fi
#Check if a logfile parameter is set #Check if a logfile parameter is set
LOG="$1" if [ -z "${LOG}" ]; then
[ -n "${LOG}" ] || fatal "Set a logfile as the first parameter" echo "Set a logfile as the first parameter"
shift exit 1
fi
while true; do shift
while [ 1 ]
do
#Try to touch the file if it doesn't exist #Try to touch the file if it doesn't exist
[ -f "${LOG}" ] || touch "${LOG}" || fatal "Logfile '${LOG}' is not writeable" if [ ! -f ${LOG} ]; then
touch ${LOG} || ( echo "Logfile '${LOG}' is not writeable" && exit 1 )
fi
#Check if the file is writeable #Check if the file is writeable
[ -w "${LOG}" ] || fatal "Logfile '${LOG}' is not writeable" if [ ! -w ${LOG} ]; then
echo "Logfile '${LOG}' is not writeable"
exit 1
fi
#Start the application #Start the application
bin/run.sh "$@" >>${LOG} 2>>${LOG} bin/run.sh $@ >>${LOG} 2>>${LOG}
TIME_FMT=$(date +%Y-%m-%dT%H:%M:%S%z)
#Send email #Send email
if [ "$ERROR_HANDLING" = 1 ]; then if [ $ERROR_HANDLING = 1 ]; then
TIME_NOW=$(date +%s) TIME_NOW=$(date +%s)
TIME_SINCE_LAST_SEND=$(($TIME_NOW - $LAST_EMAIL_SEND)) TIME_SINCE_LAST_SEND=$(($TIME_NOW - $LAST_EMAIL_SEND))
if [ "$TIME_SINCE_LAST_SEND" -gt "$TIME_BETWEEN_EMAILS" ]; then if [ $TIME_SINCE_LAST_SEND -gt $TIME_BETWEEN_EMAILS ]; then
{ printf "Server was restarted at: $(date)\nThe last 50 lines of the log before the error happens:\n $(tail -n 50 ${LOG})" | mail -s "Pad Server was restarted" $EMAIL_ADDRESS
cat <<EOF
Server was restarted at: ${TIME_FMT}
The last 50 lines of the log before the server exited:
EOF
tail -n 50 "${LOG}"
} | mail -s "Etherpad restarted" "$EMAIL_ADDRESS"
LAST_EMAIL_SEND=$TIME_NOW LAST_EMAIL_SEND=$TIME_NOW
fi fi
fi fi
pecho "RESTART! ${TIME_FMT}" >>${LOG} echo "RESTART!" >>${LOG}
#Sleep 10 seconds before restart #Sleep 10 seconds before restart
sleep 10 sleep 10