#!/bin/bash -e file= if test -e "${!#}"; then for var in $(sed -n 's,^ *# \+\(-p\|--pwd\) \+\([a-zA-Z][a-zA-Z0-9_]*\),\2,p' "${!#}"); do export ${var}=$(pwgen 40 1) done fi while test $# -gt 0; do case "$1" in (-h|--help) if test -e "${!#}"; then sed -n 's,^ *# \( *[^-]\),\1,p' "${!#}" cat < my-site.yaml EOF fi exit;; (-v|--var) shift; if [[ $1 =~ ^[a-zA-Z][a-zA-Z0-9_]*= ]]; then export $1 else echo "ERROR not a variable assignment: $1" 1>&2 echo " see: $0 --help" 1>&2 exit 1 fi;; (-p|--pwd) shift; if [[ $1 =~ ^[a-zA-Z][a-zA-Z0-9_]*$ ]]; then export $1=$(pwgen 40 1) else echo "ERROR not a variable name: $1" 1>&2 echo " see: $0 --help" 1>&2 exit 1 fi;; (*) if test $# -ne 1 -o ! -e "$1"; then echo "ERROR please specify exactly one template file" 1>&2 echo " this not one template file: $*" 1>&2 echo " see: $0 --help" 1>&2 exit 1 fi file="$1"; esac if test $# -lt 1; then echo "ERROR too few arguments" 1>&2 echo " see: $0 --help" 1>&2 exit 1 fi shift done if ! test -e "$file"; then echo "ERROR please specify a template file" 1>&2 echo " see: $0 --help" 1>&2 exit 1 fi eval "sed '/^ *#/d' <