You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
#!/usr/bin/env bash |
|
|
|
function print_help(){ |
|
echo -e "serve\t\tmanages a webserver for the project" |
|
echo -e "\t--start [port [bind]]\tstarts the server" |
|
echo -e "\t--stop\tstops the server" |
|
echo -e "\t--status\treports the status of the server" |
|
} |
|
|
|
function start_server(){ |
|
local current="$(project current --path)" |
|
if [ -z "$current" ]; then |
|
echo "Set current project first" |
|
exit 1 |
|
fi |
|
local www="$current/www/" |
|
local port=${1:-"8000"} |
|
local bind="$2" |
|
if [ -d "$www" ]; then |
|
echo "Creating www directory" |
|
fi |
|
local count=$( find "$www" -type f | wc -l) |
|
if [ -n "$bind" ]; then |
|
echo "Serving $count files to $bind from the $www directory" |
|
setsid python -m http.server "$port" --bind "$bind" --directory "$www" > /dev/null 2> /dev/null & |
|
else |
|
echo "Serving $count files from the $www directory" |
|
setsid python -m http.server "$port" --directory "$www" > /dev/null 2> /dev/null & |
|
fi |
|
} |
|
|
|
function stop_server(){ |
|
echo "Stopping..." |
|
ps -aux | grep -i "python" | grep -v "grep" | awk '{print $2}' | xargs kill |
|
echo "Stopped" |
|
} |
|
|
|
function status_server(){ |
|
ps -aux | grep -v "grep" | grep -qi "python" |
|
if [ $? -eq 1 ]; then |
|
# There is not a server running |
|
echo "Server not running" |
|
else |
|
echo "Server is running" |
|
fi |
|
} |
|
|
|
case "$1" in |
|
-h|--help) |
|
print_help | column -t -s" " |
|
exit 0 |
|
;; |
|
--parent-help) |
|
print_help |
|
exit 0 |
|
;; |
|
--start) |
|
start_server |
|
exit 0 |
|
;; |
|
--stop) |
|
stop_server |
|
exit 0 |
|
;; |
|
--status) |
|
status_server |
|
exit 0 |
|
;; |
|
esac
|
|
|