Blame view

framework/sake 2.38 KB
0084d336   Administrator   Importers CRUD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  #!/usr/bin/env bash
  
  # Check for an argument
  if [ ${1:-""} = "" ]; then
  	echo "SilverStripe Sake
  
  Usage: $0 (command-url) (params)
  Executes a SilverStripe command"
  	exit 1
  fi
  
  # Set $framework and $base
  sakedir=`dirname $0`
  if [ -f $sakedir/cli-script.php ]; then
  	framework=$sakedir
  	base=`dirname $sakedir`
  elif [ -d ./framework ]; then
  	framework=./framework
  	base=.
  elif [ -d ./sapphire ]; then
  	framework=./sapphire
  	base=.
  elif [ -f ./cli-script.php ]; then
  	framework=.
  	base=..
  else
  	echo "Can't find ./framework/cli-script.php or ./cli-script.php"
  	exit 1
  fi
  
  # Find the PHP binary
  for candidatephp in php php5; do
  	if [ `which $candidatephp 2>/dev/null` -a -f `which $candidatephp 2>/dev/null` ]; then
  		php=`which $candidatephp 2>/dev/null`
  		break
  	fi
  done
  if [ "$php" = "" ]; then
  	echo "Can't find any php binary"
  	exit 2
  fi
  
  ################################################################################################
  ## Installation to /usr/bin
  
  if [ "$1" = "installsake" ]; then
  	echo "Installing sake to /usr/bin..."
  	cp $0 /usr/bin
  	exit 0
  fi
  
  ################################################################################################
  ## Process control
  
  if [ "$1" = "-start" ]; then
  	if [ "`which daemon`" = "" ]; then
  		echo "You need to install the 'daemon' tool.  In debian, go 'sudo apt-get install daemon'"
  		exit 1
  	fi
  	
  	if [ ! -f $base/$2.pid ]; then
  		echo "Starting service $2 $3"
  		touch $base/$2.pid
  		pidfile=`realpath $base/$2.pid`
  		
  		outlog=$base/$2.log
  		errlog=$base/$2.err
  
  		echo "Logging to $outlog"
  		
  		sake=`realpath $0`
  		base=`realpath $base`
  		
  		# if third argument is not explicitly given, copy from second argument
  		if [ "$3" = "" ]; then
  			url=$2
  		else
  			url=$3
  		fi
  
  		# TODO: Give a globally unique processname by including the projectname as well		
  		processname=$2
  
  		daemon -n $processname -r -D $base --pidfile=$pidfile --stdout=$outlog --stderr=$errlog $sake $url
  	else
  		echo "Service $2 seems to already be running"
  	fi
  		exit 0
  fi
  
  if [ "$1" = "-stop" ]; then
  	pidfile=$base/$2.pid
  	if [ -f $pidfile ]; then
  		echo "Stopping service $2"
  		
  		# TODO: This is a bad way of killing the process
  		kill -KILL `cat $pidfile`
  		unlink $pidfile
  	else
  		echo "Service $2 doesn't seem to be running."
  	fi
  	exit 0
  fi
  
  ################################################################################################
  ## Basic execution
  
  $php $framework/cli-script.php ${*}