59 lines
1 KiB
Bash
Executable file
59 lines
1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Required Binaries:
|
|
# | simple-http-server
|
|
# | sass
|
|
|
|
# ===== Configuration ===== #
|
|
ADDR="127.0.01" # bind address
|
|
PORT="8000" # bind port
|
|
WEBROOT="www" # root web directory
|
|
USE_INDEX=true
|
|
NO_CACHE=true
|
|
declare -a SRV_ARGS=()
|
|
|
|
SCSS_PATH="$WEBROOT/scss"
|
|
CSS_PATH="$WEBROOT/css"
|
|
# ========================= #
|
|
|
|
# ===== Local State ===== #
|
|
SASS_PID=
|
|
# ======================= #
|
|
|
|
function cleanup {
|
|
if [[ -n "$SASS_PID" ]]; then
|
|
kill "$SASS_PID"
|
|
fi
|
|
}
|
|
|
|
# Watch .sass/.scss files and compile on change
|
|
function watch_scss {
|
|
# watch format "SCSS_PATH:OUT_PATH"
|
|
sass --watch "$SCSS_PATH:$CSS_PATH"
|
|
}
|
|
|
|
function host {
|
|
local args=$@
|
|
# Apply Flags
|
|
if [[ "$NO_CACHE" == true ]]; then
|
|
args+=("--nocache")
|
|
fi
|
|
if [[ "$USE_INDEX" == true ]]; then
|
|
args+=("--index")
|
|
fi
|
|
|
|
# Apply Options
|
|
args+=(--ip "$ADDR" --port "$PORT")
|
|
|
|
simple-http-server $args $@ -- "$WEBROOT"
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
set -ueo pipefail
|
|
set -x
|
|
|
|
# auto compile scss changes
|
|
watch_scss &
|
|
SASS_PID=$!
|
|
|
|
# host dev server
|
|
host ${SRV_ARGS[@]}
|