Make branch more stable
[lgpl/argeo-commons.git] / dist / argeo-node / rpm / usr / sbin / argeoctl
index ccadd8e9afd2f5d44fbb2bc9183654c2dcd5b3eb..c355308140cbae1b677ccbbacda9d54db6477200 100755 (executable)
 #!/bin/sh
 APP=argeo
 
+if [ -z "$2" ]; then
+# Default node
+echo Argeo default node
+CONF_DIR=/etc/$APP
+EXEC_DIR=/var/lib/$APP
+
+else
+# Instance
+INSTANCE=$2
+echo Argeo instance $INSTANCE
+  if [ -z "$INSTANCE_DIR" ]; then
+  INSTANCE_DIR=$HOME/.local/share/$APP.d/$INSTANCE
+  fi
+  if [ -z "$CONF_DIR" ]; then
+  CONF_DIR=$HOME/.config/$APP.d/$INSTANCE
+  fi  
+EXEC_DIR=$INSTANCE_DIR
+# Make sure minimal files are available
+  if [ ! -f $CONF_DIR/$APP.ini ]; then
+  cp /etc/$APP/$APP.ini $CONF_DIR
+  fi
+  if [ ! -f $CONF_DIR/log4j.properties ]; then
+  cp /etc/$APP/log4j.properties $CONF_DIR
+  fi
+fi
+
+# Java
+if [ -z "$JVM" ]; then
 JVM=java
+fi
 
 # Directories and files
-CONF_DIR=/etc/$APP
-CONF_DIRS=/etc/$APP/conf.d
+
 BASE_POLICY_ALL=/usr/share/$APP/all.policy
 BASE_CONFIG_INI=/usr/share/$APP/config.ini
 
-EXEC_DIR=/var/lib/$APP
+CONF_DIRS=$CONF_DIR/conf.d
 DATA_DIR=$EXEC_DIR/data
 CONF_RW=$EXEC_DIR/state
 CONFIG_INI=$CONF_RW/config.ini
 
+# A2 sources can be overridden in *.ini files
+A2_SOURCES=a2:///
 OSGI_INSTALL_AREA=/usr/share/osgi/boot
 OSGI_FRAMEWORK=$OSGI_INSTALL_AREA/org.eclipse.osgi.jar
 
 # Overwrite variables
 if [ -f $CONF_DIR/settings.sh ];then
-       . $CONF_DIR/settings.sh
+  . $CONF_DIR/settings.sh
 fi
 
 RETVAL=0
 
+## START ##
 start() {
-       mkdir -p $CONF_RW
-       mkdir -p $DATA_DIR
+mkdir -p $CONF_RW
+mkdir -p $DATA_DIR
 
-    # Merge config files
-    printf "## Equinox configuration - Generated by /usr/sbin/nodectl ##\n\n" > $CONFIG_INI
-    cat $BASE_CONFIG_INI >> $CONFIG_INI
-    printf "\n##\n## $CONF_DIR/$APP.ini\n##\n\n" >> $CONFIG_INI
-    cat $CONF_DIR/$APP.ini >> $CONFIG_INI
-    for file in `ls -v $CONF_DIRS/*.ini`; do
-            printf "\n##\n## $file\n##\n\n" >> $CONFIG_INI
-            cat $file >> $CONFIG_INI
-    done;
+# Merge config files
+printf "## Equinox configuration - Generated by /usr/sbin/argeoctl ##\n\n" > $CONFIG_INI
+cat $BASE_CONFIG_INI >> $CONFIG_INI
+printf "\n##\n## $CONF_DIR/$APP.ini\n##\n\n" >> $CONFIG_INI
+cat $CONF_DIR/$APP.ini >> $CONFIG_INI
+# Concatenate additional .ini files
+if [ -d "$CONF_DIRS" ]; then
+for file in `ls -v $CONF_DIRS/*.ini`; do
+  printf "\n##\n## $file\n##\n\n" >> $CONFIG_INI
+  cat $file >> $CONFIG_INI
+done;
+fi
 
-       cd $EXEC_DIR
-       $JVM \
-               -Dlog4j.configuration="file:$CONF_DIR/log4j.properties" \
-               $JAVA_OPTS -jar $OSGI_FRAMEWORK \
-               -configuration "$CONF_RW" \
-               -data "$DATA_DIR"
+cd $EXEC_DIR
+$JVM \
+  -Dlog4j.configuration="file:$CONF_DIR/log4j.properties" \
+  $JAVA_OPTS -jar $OSGI_FRAMEWORK \
+  -Dargeo.osgi.sources=$A2_SOURCES \
+  -configuration "$CONF_RW" \
+  -data "$DATA_DIR"
 }
 
+## RELOAD ##
 reload() {
-       echo Not yet implemented
-}
-
-stop() {
-       if [ -f $PID_FILE ];then
-               PID=`cat $PID_FILE`
-               kill -0 $PID &> /dev/null
-               PID_EXISTS=$?
-               if [ $PID_EXISTS -ne 0 ]; then
-                       echo Dead $APP process with pid $PID, removing $PID_FILE
-                       rm -f $PID_FILE
-                       RETVAL=1
-                       return $RETVAL
-               fi
-       else
-               echo $APP is not running
-               RETVAL=1
-               return $RETVAL
-       fi
-       
-       # notifies application by removing the shutdown file
-#      rm -f $SHUTDOWN_FILE
-       kill $PID
-       
-       # wait 10 min for application to shutdown, then kill it
-       TIMEOUT=$((10*60))
-       BEGIN=$(date +%s)
-       while kill -0 $PID &> /dev/null
-       do
-               sleep 1
-               NOW=$(date +%s)
-               DURATION=$(($NOW-$BEGIN))
-               if [ $DURATION -gt $TIMEOUT ]; then
-                       kill -9 $PID
-                       echo Forcibly killed $APP with pid $PID
-                       RETVAL=1
-               fi
-       done
-       
-       # remove pid file
-       rm -f $PID_FILE
-       return $RETVAL
-}
-
-status() {
-       if [ -f $PID_FILE ];then
-               PID=`cat $PID_FILE`
-       else
-               echo $APP is not running
-               return $RETVAL
-       fi
-       kill -0 $PID &> /dev/null
-       PID_EXISTS=$?
-       if [ $PID_EXISTS -eq 0 ]; then
-               echo $APP is running with pid $PID ...
-       else
-               echo No $APP process with pid $PID, removing $PID_FILE
-               rm -f $PID_FILE
-       fi
-       return $RETVAL
+echo Not yet implemented
 }
 
 # main
 case "$1" in
-  start)
-        start
-        ;;
-  reload)
-        reload
-        ;;
-  stop)
-        stop
-        ;;
-  status)
-       status
-        ;;
-  *)
-        echo $"Usage: $0 {start|stop|status}"
-        exit 1
+start)
+  start
+  ;;
+reload)
+  reload
+  ;;
+*)
+  echo $"Usage: $0 {start|reload}"
+  exit 1
 esac
\ No newline at end of file