forked from LockerProject/Locker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
locker
executable file
·83 lines (72 loc) · 2.05 KB
/
locker
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
#!/bin/sh
show_help() {
cat <<EOF
Usage: locker [options]
Options:
--production Run in production mode (default: development mode)
EOF
}
locker_mode=development
# Parse command line options
while true; do
case "$1" in
-h|--help|-\?) show_help; exit 0;;
--production) locker_mode=production; shift ;;
--development) shift ;;
--) shift; break;;
-*) echo "invalid option: $1" 1>&2; show_help; exit 1;;
*) break;;
esac
done
# If we were installed via lockerbox, find our dependencies there
lockerbox_env=../lockerbox_environment.sh
if [ -f "$lockerbox_env" ]; then
. "$lockerbox_env"
fi
# Make sure we have some API keys, otherwise we can't do much
apikeys=Config/apikeys.json
if [ ! -f "$apikeys" ]; then
echo "No API keys found in $apikeys" >&2
echo "see https://github.com/LockerProject/Locker/wiki/GettingAPIKeys" >&2
exit 1
fi
mongodata=Me/mongodata
mongolock=$mongodata/mongod.lock
if [ -s $mongolock ]; then
echo "mongod lock file exists: $mongolock..."
pid=$(cat "$mongolock")
if [ "$lockermode" = "production" ]; then
# Shut it down
echo "...shutting it down"
kill "$pid"
else
# Automatically check and repair mongo
if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
echo "...and it's still running. Hopefully that's OK."
else
echo "...but it's dead. Cleaning up..."
rm -f "$mongolock"
if ! mongod --dbpath "$mongodata" --repair; then
echo "mongod --repair failed!" >&2
exit 1
fi
fi
fi
fi
locker_runtime=lockerd.js
# Set defaults based on our runtime mode
case "$locker_mode" in
production)
# Tell node to run in production mode
NODE_ENV=production
export NODE_ENV
# Use the forever wrapper
locker_runtime=lockerd.js
;;
development|*)
# Don't use the forever wrapper
locker_runtime=_lockerd.js
;;
esac
# Launch the locker
exec node "$locker_runtime" "$@"