]> git.argeo.org Git - lgpl/argeo-commons.git/blob - argeo-node/base/bin/argeo-cms
Prepare next development cycle
[lgpl/argeo-commons.git] / argeo-node / base / bin / argeo-cms
1 #!/bin/sh
2 APP=argeo
3
4 JVM=java
5
6 BIN_DIR=`dirname "$0"`
7 BASE_DIR="$(cd "$(dirname "$0")/.."; pwd -P)"
8 #BASE_DIR=$BIN_DIR/..
9
10 # Directories and files
11 CONF_DIR=$BASE_DIR/etc/$APP
12 CONF_DIRS=$CONF_DIR/conf.d
13 BASE_CONFIG_INI=$BASE_DIR/share/$APP/config.ini
14
15 EXEC_DIR=.
16 DATA_DIR=$EXEC_DIR/data
17 CONF_RW=$EXEC_DIR/state
18 CONFIG_INI=$CONF_RW/config.ini
19
20 A2_SOURCES=a2://$BASE_DIR/share/osgi
21 OSGI_INSTALL_AREA=$BASE_DIR/share/osgi/boot
22 OSGI_FRAMEWORK=$OSGI_INSTALL_AREA/org.eclipse.osgi.jar
23
24 # Overwrite variables
25 if [ -f $CONF_DIR/settings.sh ];then
26 . $CONF_DIR/settings.sh
27 fi
28
29 RETVAL=0
30
31 start() {
32 mkdir -p $CONF_RW
33 mkdir -p $DATA_DIR
34
35 # Merge config files
36 printf "## Equinox configuration - Generated by argeo-cms ##\n\n" > $CONFIG_INI
37 cat $BASE_CONFIG_INI >> $CONFIG_INI
38 printf "\n##\n## $CONF_DIR/$APP.ini\n##\n\n" >> $CONFIG_INI
39 cat $CONF_DIR/$APP.ini >> $CONFIG_INI
40 for file in `ls -v $CONF_DIRS/*.ini`; do
41 printf "\n##\n## $file\n##\n\n" >> $CONFIG_INI
42 cat $file >> $CONFIG_INI
43 done;
44
45 cd $EXEC_DIR
46 $JVM \
47 -Dlog4j.configuration="file:$CONF_DIR/log4j.properties" \
48 $JAVA_OPTS -jar $OSGI_FRAMEWORK \
49 -Dargeo.osgi.sources=$A2_SOURCES \
50 -configuration "$CONF_RW" \
51 -data "$DATA_DIR"
52 }
53
54 reload() {
55 echo Not yet implemented
56 }
57
58 stop() {
59 if [ -f $PID_FILE ];then
60 PID=`cat $PID_FILE`
61 kill -0 $PID &> /dev/null
62 PID_EXISTS=$?
63 if [ $PID_EXISTS -ne 0 ]; then
64 echo Dead $APP process with pid $PID, removing $PID_FILE
65 rm -f $PID_FILE
66 RETVAL=1
67 return $RETVAL
68 fi
69 else
70 echo $APP is not running
71 RETVAL=1
72 return $RETVAL
73 fi
74
75 # notifies application by removing the shutdown file
76 # rm -f $SHUTDOWN_FILE
77 kill $PID
78
79 # wait 10 min for application to shutdown, then kill it
80 TIMEOUT=$((10*60))
81 BEGIN=$(date +%s)
82 while kill -0 $PID &> /dev/null
83 do
84 sleep 1
85 NOW=$(date +%s)
86 DURATION=$(($NOW-$BEGIN))
87 if [ $DURATION -gt $TIMEOUT ]; then
88 kill -9 $PID
89 echo Forcibly killed $APP with pid $PID
90 RETVAL=1
91 fi
92 done
93
94 # remove pid file
95 rm -f $PID_FILE
96 return $RETVAL
97 }
98
99 status() {
100 if [ -f $PID_FILE ];then
101 PID=`cat $PID_FILE`
102 else
103 echo $APP is not running
104 return $RETVAL
105 fi
106 kill -0 $PID &> /dev/null
107 PID_EXISTS=$?
108 if [ $PID_EXISTS -eq 0 ]; then
109 echo $APP is running with pid $PID ...
110 else
111 echo No $APP process with pid $PID, removing $PID_FILE
112 rm -f $PID_FILE
113 fi
114 return $RETVAL
115 }
116
117 # main
118 case "$1" in
119 start)
120 start
121 ;;
122 reload)
123 reload
124 ;;
125 stop)
126 stop
127 ;;
128 status)
129 status
130 ;;
131 *)
132 start
133 ;;
134 esac