From 85007db580ccf662a45cf2aaeb83518ad2ddb85a Mon Sep 17 00:00:00 2001 From: Cullum Smith Date: Thu, 11 Jul 2024 10:55:45 -0400 Subject: initial boxconf scaffolding --- boxconf | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 boxconf (limited to 'boxconf') diff --git a/boxconf b/boxconf new file mode 100755 index 0000000..52d8500 --- /dev/null +++ b/boxconf @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Shell-based configuration management framework for unix-like systems. + +set -eu + +PROGNAME=boxconf +USAGE="${PROGNAME} [-d] [-e VAR=VALUE]... [-o HOSTNAME] TARGET" +BOXCONF_ROOT=$(dirname "$(readlink -f "$0")") + +usage(){ + [ $# -gt 0 ] && printf '%s\n' "$1" 2>&1 + printf 'usage: %s\n' "$USAGE" 2>&1 + exit 2 +} + +while getopts :hde:o:X _bc_opt; do + case $_bc_opt in + h) usage ;; + d) set -x ;; + e) eval "$OPTARG" ;; + o) BOXCONF_HOSTNAME=$OPTARG ;; + X) _bc_run=1 ;; + :) usage "missing option value: -${OPTARG}" ;; + ?) usage "unknown option: -${OPTARG}" ;; + esac +done + +shift $((OPTIND - 1)) +[ $# -eq 1 ] || usage + +for _bc_lib in "${BOXCONF_ROOT}/lib"/*; do + . "$_bc_lib" +done + +if [ -n "${_bc_run:-}" ]; then + _boxconf_run +else + _boxconf_deploy "$1" "${BOXCONF_HOSTNAME:-$1}" "$@" +fi -- cgit v1.2.3