You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.4 KiB
94 lines
3.4 KiB
#!/bin/sh |
|
## |
|
## pm2.sh -- Node PM2 shell execution wrapper |
|
## Copyright (c) 2014-2016 Ralf S. Engelschall <rse@engelschall.com> |
|
## |
|
|
|
# emulate the standard pm2 wrapper script (shell part) |
|
if [ -f $HOME/.pm2/custom_options.sh ]; then |
|
. $HOME/.pm2/custom_options.sh |
|
fi |
|
|
|
# execute the standard pm2 wrapper script |
|
pm2_cmd () { |
|
NODE_PATH=@l_prefix@/lib/node/pkg/pm2 |
|
export NODE_PATH |
|
@l_prefix@/bin/node \ |
|
$PM2_NODE_OPTIONS \ |
|
@l_prefix@/lib/node/pkg/pm2/pm2/bin/pm2 \ |
|
${1+"$@"} |
|
} |
|
|
|
# simple deployment/undeployment commands |
|
if [ $# -ge 1 ]; then |
|
cmd="$1" |
|
case "$cmd" in |
|
local-deploy | local-undeploy ) |
|
if [ ".`id -u`" != .@l_nuid@ ]; then |
|
echo "$0: ERROR: command \"$cmd\" can only be used under UID @l_nuid@" 1>&2 |
|
exit 1 |
|
fi |
|
if [ $# -lt 2 ]; then |
|
echo "$0: ERROR: command \"$cmd\" requires a deployment unit name" 1>&2 |
|
exit 1 |
|
fi |
|
name="$2" |
|
if [ ".$name" = . ]; then |
|
echo "$0: ERROR: invalid (empty) deployment unit name" 1>&2 |
|
exit 1 |
|
fi |
|
appdir="@l_prefix@/var/pm2/app/" |
|
case "$cmd" in |
|
deploy ) |
|
if [ $# -ne 3 ]; then |
|
echo "$0: ERROR: invalid number of arguments for command \"undeploy\"" 1>&2 |
|
echo "$0: USAGE: $0 local-deploy <name> <artifact>" 1>&2 |
|
exit 1 |
|
fi |
|
if [ -d "$appdir/$name" ]; then |
|
echo "$0: ERROR: deployment unit \"$name\" already existing -- undeploy first" 1>&2 |
|
exit 1 |
|
fi |
|
artifact="$3" |
|
if [ ! -f "$artifact" ]; then |
|
echo "$0: ERROR: deployment artifact \"$artifact\" not found" 1>&2 |
|
exit 1 |
|
fi |
|
mkdir "$appdir/$name" |
|
unzip -q -o -d "$appdir/$name" "$artifact" |
|
js="" |
|
if [ -f "$appdir/$name/app.js" ]; then |
|
js="$appdir/$name/app.js" |
|
elif [ -f "$appdir/$name/app.json" ]; then |
|
js="$appdir/$name/pm2.json" |
|
else |
|
echo "$0: ERROR: deployment unit \"$name\" has neither \"app.js\" nor \"pm2.json\" at the top-level" 1>&2 |
|
rm -rf "$appdir/$name" |
|
exit 1 |
|
fi |
|
pm2_cmd -s start "$js" --name "$name" |
|
exit 0 |
|
;; |
|
undeploy ) |
|
if [ $# -ne 2 ]; then |
|
echo "$0: ERROR: invalid number of arguments for command \"undeploy\"" 1>&2 |
|
echo "$0: USAGE: $0 local-undeploy <name>" 1>&2 |
|
exit 1 |
|
fi |
|
if [ ! -d "$appdir/$name" ]; then |
|
echo "$0: ERROR: deployment unit \"$name\" not already existing -- deploy first" 1>&2 |
|
exit 1 |
|
fi |
|
pm2_cmd -s stop "$name" |
|
pm2_cmd -s delete "$name" |
|
rm -rf "$appdir/$name" |
|
exit 0 |
|
;; |
|
esac |
|
;; |
|
esac |
|
fi |
|
|
|
# pass-through execution to pm2 wrapper script |
|
pm2_cmd ${1+"$@"} |
|
|
|
|