@@ -9,6 +9,9 @@ function print_help {
9
9
10
10
cmd=$1
11
11
apps=(" account" " announcement" " conf" " contest" " options" " problem" " submission" )
12
+ backend=" http://127.0.0.1:7890"
13
+ backend_cmd=" python3 manage.py runserver"
14
+ frontend_cmd=" node build/dev-server.js"
12
15
13
16
function clean {
14
17
rm -rf ./data/zips
@@ -33,59 +36,90 @@ function run_onl {
33
36
# using postgres
34
37
# docker run -it -d -e POSTGRES_DB=onlinejudge -e POSTGRES_USER=onlinejudge -e POSTGRES_PASSWORD=onlinejudge -p 5435:5432 --name oj-postgres-dev postgres:10-alpine
35
38
39
+ if ! command which python3 | grep venv > /dev/null; then
40
+ source venv/bin/activate
41
+ fi
42
+
36
43
# run dramatiq
37
- pgrep dramatiq > /dev/null
38
- if [[ $? -ne 0 ]]; then
44
+ if ! command pgrep dramatiq > /dev/null; then
39
45
echo " running dramatiq ..."
40
46
python3 manage.py rundramatiq & > data/log/dramatiq.log &
47
+ [[ $? -ne 0 ]] && echo " Error: fail to run dramatiq"
41
48
else
42
- echo " dramatiq is already running ... "
49
+ echo " dramatiq is already running"
43
50
fi
44
51
45
52
# run redis
46
- docker container ls | grep redis > /dev/null
47
- if [[ $? -ne 0 ]]; then
53
+ if ! command docker container ls | grep redis > /dev/null; then
48
54
echo " running redis in docker ..."
49
- docker ps -a | grep redis > /dev/null
50
- if [[ $? -ne 0 ]]; then
55
+ if ! command docker ps -a | grep redis > /dev/null; then
51
56
docker run -it -d -p 6380:6379 --name oj-redis-dev redis:4.0-alpine > /dev/null
52
57
else
53
58
container_id=$( docker ps -a | grep redis | awk ' {print $1}' )
54
59
docker container start $container_id
55
60
fi
61
+ [[ $? -ne 0 ]] && echo " Error: fail to run redis docker"
56
62
else
57
63
echo " redis is already running"
58
64
fi
59
65
60
66
# run onl
61
- pgrep -f " python3 manage.py runserver" > /dev/null
62
- if [[ $? -ne 0 ]]; then
63
- echo " running onl ..."
67
+ if ! command pgrep -f " $backend_cmd " > /dev/null; then
68
+ echo " running onl controller ..."
64
69
python3 manage.py runserver 0.0.0.0:7890 & > data/log/onl.log &
70
+ [[ $? -ne 0 ]] && echo " Error: fail to run onl controll"
71
+ else
72
+ echo " onl controller is already running"
73
+ fi
74
+
75
+ # run frontend
76
+ if ! command pgrep -f " $frontend_cmd " > /dev/null; then
77
+ echo " running onl frontend ..."
78
+ if [[ -z $FRONTEND ]]; then
79
+ echo " environment variable FRONTEND is empty, you should run frontend yourself"
80
+ else
81
+ fe_log_path=" $( pwd) /data/log/npm.log"
82
+ export NVM_DIR=" $HOME /.nvm"
83
+ [ -s " $NVM_DIR /nvm.sh" ] && \. " $NVM_DIR /nvm.sh" # This loads nvm
84
+ (cd $FRONTEND ; nvm use v8.12.0; TARGET=$backend npm run dev & > $fe_log_path & )
85
+ [[ $? -ne 0 ]] && echo " Error: fail to run onl frontend"
86
+ fi
65
87
else
66
- echo " onl is already running ... "
88
+ echo " onl frontend is already running"
67
89
fi
68
90
}
69
91
70
92
function stop_onl {
71
93
pkill dramatiq
72
- pkill -f " python3 manage.py runserver "
94
+ pkill -f " $backend_cmd "
73
95
docker container stop oj-redis-dev > /dev/null
96
+ pkill -f " $frontend_cmd "
74
97
}
75
98
76
- if [[ $cmd == " make" || $cmd == " makemigrations" ]]; then
77
- for app in " ${apps[@]} " ; do
78
- python3 manage.py makemigrations $app
79
- done
80
- elif [[ $cmd == " migrate" ]]; then
81
- migrate
82
- elif [[ $cmd == " clean" ]]; then
83
- clean
84
- elif [[ $cmd == " rebuild" ]]; then
85
- clean
86
- migrate
87
- elif [[ $cmd == " run" ]]; then
88
- run_onl
89
- elif [[ $cmd == " stop" ]]; then
90
- stop_onl
91
- fi
99
+ case $cmd in
100
+ " make" | " makemigrations" )
101
+ for app in " ${apps[@]} " ; do
102
+ python3 manage.py makemigrations $app
103
+ done
104
+ ;;
105
+ " migrate" )
106
+ migrate
107
+ ;;
108
+ " clean" )
109
+ clean
110
+ ;;
111
+ " rebuild" )
112
+ clean
113
+ rebuild
114
+ ;;
115
+ " run" )
116
+ run_onl
117
+ ;;
118
+ " stop" )
119
+ stop_onl
120
+ ;;
121
+ * )
122
+ echo " unknown commmand: $cmd "
123
+ print_help
124
+ ;;
125
+ esac
0 commit comments