summaryrefslogtreecommitdiff
path: root/.app/lib
diff options
context:
space:
mode:
Diffstat (limited to '.app/lib')
-rw-r--r--.app/lib/app-common56
-rw-r--r--.app/lib/app-operate73
2 files changed, 72 insertions, 57 deletions
diff --git a/.app/lib/app-common b/.app/lib/app-common
index 0d33c84..3856430 100644
--- a/.app/lib/app-common
+++ b/.app/lib/app-common
@@ -16,7 +16,14 @@ assert_is_instance() {
$usage "Missing required option -i."
fi
- if [ ! -d $name/$instance ]
+ # Use $APPSH_APPS as prefix if it's set
+ local x=""
+ if [ ! -z "$APPSH_APPS" ]
+ then
+ x="$APPSH_APPS/"
+ fi
+
+ if [ ! -d $x$name/$instance ]
then
echo "No such instance: $name/$instance." >&2
exit 1
@@ -24,7 +31,7 @@ assert_is_instance() {
if [ "$check_link" != "no" ]
then
- if [ ! -e $name/$instance/current ]
+ if [ ! -e $x$name/$instance/current ]
then
echo "Missing 'current' link." >&2
exit 1
@@ -103,3 +110,48 @@ find_versions() {
ls -1d *
)
}
+
+# TODO: set ulimit
+# TODO: set umask
+# TODO: change group newgrp/sg
+run_app() {
+ local name=$1; shift
+ local instance=$1; shift
+ local bin=$1; shift
+ local method=$1; shift
+
+ assert_is_instance operate_usage "$name" "$instance"
+
+ local x=""
+ if [ ! -z "$APPSH_APPS" ]
+ then
+ x="$APPSH_APPS/"
+ fi
+
+ (
+ cd $x$name/$instance
+ APPSH_INSTANCE_HOME=`pwd`
+ cd current
+
+ e="`get_conf_in_group $apps $name $instance env`"
+
+ # Set a default PATH which can be overridden by the application's settings
+ set +e
+ env -i \
+ PATH=/bin:/usr/bin \
+ $e \
+ PWD=$PWD \
+ APPSH_METHOD=$method \
+ APPSH_APPS=$apps \
+ APPSH_HOME=$APPSH_HOME \
+ APPSH_NAME=$name \
+ APPSH_INSTANCE=$instance \
+ APPSH_INSTANCE_HOME=$APPSH_INSTANCE_HOME \
+ $bin "$@"
+ local ret=$?
+ set +x
+ set -e
+
+ exit $ret
+ )
+}
diff --git a/.app/lib/app-operate b/.app/lib/app-operate
index f361173..2b1408d 100644
--- a/.app/lib/app-operate
+++ b/.app/lib/app-operate
@@ -10,57 +10,6 @@ operate_usage() {
exit 1
}
-# TODO: set ulimit
-# TODO: set umask
-# TODO: change group newgrp/sg
-run_control() {
- local method=$1; shift
- local name=$1; shift
- local instance=$1; shift
-
- assert_is_instance operate_usage "$name" "$instance"
-
- (
- cd $name/$instance
- APPSH_INSTANCE_HOME=`pwd`
- cd current
-
- bin=`get_conf $apps $name $instance app.method`
-
- if [ -z "$bin" ]
- then
- bin=$APPSH_HOME/.app/lib/pid-method
- fi
-
- if [ ! -x "$bin" ]
- then
- echo "Invalid executable: $bin" >&2
- exit 1
- fi
-
- e="`get_conf_in_group $apps $name $instance env`"
-
- # Set a default PATH which can be overridden by the application's settings
- set +e
- env -i \
- PATH=/bin:/usr/bin \
- $e \
- PWD=$PWD \
- APPSH_METHOD=$method \
- APPSH_APPS=$apps \
- APPSH_HOME=$APPSH_HOME \
- APPSH_NAME=$name \
- APPSH_INSTANCE=$instance \
- APPSH_INSTANCE_HOME=$APPSH_INSTANCE_HOME \
- $bin "$@"
- local ret=$?
- set +x
- set -e
-
- exit $ret
- )
-}
-
method_operate_usage() {
if [ -n "$1" ]
then
@@ -86,11 +35,25 @@ method_operate() {
shift
fi
+ bin=`get_conf $apps $name $instance app.method`
+
+ if [ -z "$bin" ]
+ then
+ bin=$APPSH_HOME/.app/lib/pid-method
+ fi
+
+ if [ ! -x "$name/$instance/current/$bin" ]
+ then
+ echo "Invalid executable: $bin" >&2
+ exit 1
+ fi
+
case "$method" in
- start) run_control "start" "$name" "$instance" "$@" ;;
- stop) run_control "stop" "$name" "$instance" "$@" ;;
- status) run_control "status" "$name" "$instance" "$@" ;;
- restart) run_control "restart" "$name" "$instance" "$@" ;;
+ start) run_app "$name" "$instance" "$bin" "start" "$@" ;;
+ stop) run_app "$name" "$instance" "$bin" "stop" "$@" ;;
+ status) run_app "$name" "$instance" "$bin" "status" "$@" ;;
+ restart) run_app "$name" "$instance" "$bin" "restart" "$@" ;;
+ run) run_app "$name" "$instance" "$bin" "run" "$@" ;;
*)
if [ -z "$method" ]
then