blob: 52d85006a42f3d593795f220491c41a9ae9f5a7e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
|