#!/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[@]}