~nskaggs/help-app/functional-test-template

« back to all changes in this revision

Viewing changes to edit-here/develop_server.sh

  • Committer: Daniel Holbach
  • Date: 2015-03-19 17:54:55 UTC
  • mfrom: (111.2.14 1429896)
  • Revision ID: daniel.holbach@canonical.com-20150319175455-sjwdzzy3aqaaiu9u
mergedĀ lp:~dholbach/help-app/1429896

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env bash
2
 
##
3
 
# This section should match your Makefile
4
 
##
5
 
PY=${PY:-python}
6
 
PELICAN=${PELICAN:-pelican}
7
 
PELICANOPTS=
8
 
 
9
 
BASEDIR=$(pwd)
10
 
INPUTDIR=$BASEDIR/content
11
 
OUTPUTDIR=$(BASEDIR)/../app/www
12
 
CONFFILE=$BASEDIR/pelicanconf.py
13
 
 
14
 
###
15
 
# Don't change stuff below here unless you are sure
16
 
###
17
 
 
18
 
SRV_PID=$BASEDIR/srv.pid
19
 
PELICAN_PID=$BASEDIR/pelican.pid
20
 
 
21
 
function usage(){
22
 
  echo "usage: $0 (stop) (start) (restart) [port]"
23
 
  echo "This starts Pelican in debug and reload mode and then launches"
24
 
  echo "an HTTP server to help site development. It doesn't read"
25
 
  echo "your Pelican settings, so if you edit any paths in your Makefile"
26
 
  echo "you will need to edit your settings as well."
27
 
  exit 3
28
 
}
29
 
 
30
 
function alive() {
31
 
  kill -0 $1 >/dev/null 2>&1
32
 
}
33
 
 
34
 
function shut_down(){
35
 
  PID=$(cat $SRV_PID)
36
 
  if [[ $? -eq 0 ]]; then
37
 
    if alive $PID; then
38
 
      echo "Stopping HTTP server"
39
 
      kill $PID
40
 
    else
41
 
      echo "Stale PID, deleting"
42
 
    fi
43
 
    rm $SRV_PID
44
 
  else
45
 
    echo "HTTP server PIDFile not found"
46
 
  fi
47
 
 
48
 
  PID=$(cat $PELICAN_PID)
49
 
  if [[ $? -eq 0 ]]; then
50
 
    if alive $PID; then
51
 
      echo "Killing Pelican"
52
 
      kill $PID
53
 
    else
54
 
      echo "Stale PID, deleting"
55
 
    fi
56
 
    rm $PELICAN_PID
57
 
  else
58
 
    echo "Pelican PIDFile not found"
59
 
  fi
60
 
}
61
 
 
62
 
function start_up(){
63
 
  local port=$1
64
 
  echo "Starting up Pelican and HTTP server"
65
 
  shift
66
 
  $PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS &
67
 
  pelican_pid=$!
68
 
  echo $pelican_pid > $PELICAN_PID
69
 
  cd $OUTPUTDIR
70
 
  $PY -m pelican.server $port &
71
 
  srv_pid=$!
72
 
  echo $srv_pid > $SRV_PID
73
 
  cd $BASEDIR
74
 
  sleep 1
75
 
  if ! alive $pelican_pid ; then
76
 
    echo "Pelican didn't start. Is the Pelican package installed?"
77
 
    return 1
78
 
  elif ! alive $srv_pid ; then
79
 
    echo "The HTTP server didn't start. Is there another service using port" $port "?"
80
 
    return 1
81
 
  fi
82
 
  echo 'Pelican and HTTP server processes now running in background.'
83
 
}
84
 
 
85
 
###
86
 
#  MAIN
87
 
###
88
 
[[ ($# -eq 0) || ($# -gt 2) ]] && usage
89
 
port=''
90
 
[[ $# -eq 2 ]] && port=$2
91
 
 
92
 
if [[ $1 == "stop" ]]; then
93
 
  shut_down
94
 
elif [[ $1 == "restart" ]]; then
95
 
  shut_down
96
 
  start_up $port
97
 
elif [[ $1 == "start" ]]; then
98
 
  if ! start_up $port; then
99
 
    shut_down
100
 
  fi
101
 
else
102
 
  usage
103
 
fi