summaryrefslogtreecommitdiff
path: root/.app/lib/app-common
diff options
context:
space:
mode:
Diffstat (limited to '.app/lib/app-common')
-rw-r--r--.app/lib/app-common56
1 files changed, 54 insertions, 2 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
+ )
+}