#!/usr/bin/env bash set -Eeuo pipefail trap cleanup SIGINT SIGTERM ERR EXIT # If you need to cd to the script directory: script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) usage() { cat <&2 -e "${1-}" } die() { local msg=$1 local code=${2-1} # default exit status 1 msg "$msg" exit "$code" } parse_params() { # default values of variables set from params flag=0 param='' while :; do case "${1-}" in -h | --help) usage ;; -v | --verbose) set -x ;; --no-color) NO_COLOR=1 ;; # -f | --flag) flag=1 ;; # example flag # -p | --param) # example named parameter # param="${2-}" # shift # ;; -?*) die "Unknown option: $1" ;; *) break ;; esac shift done args=("$@") # check required params and arguments # [[ -z "${param-}" ]] && die "Missing required parameter: param" [[ ${#args[@]} -eq 0 ]] && die "Missing TARGET" [[ ${#args[@]} -ne 1 ]] && die "Can only deploy to one TARGET" return 0 } parse_params "$@" setup_colors # script logic here # msg "${RED}Read parameters:${NOFORMAT}" # msg "- flag: ${flag}" # msg "- param: ${param}" # msg "- arguments: ${args[0]}" TARGET=${args[0]} cd ${script_dir} rm -rf public/ hugo && rsync -avz --delete public/ ${TARGET} cd -