#!/usr/bin/env sh

# utility for appending, uncommenting and/or overwriting options
# in privileged conf files using the "KEY=OPTION" format

[ $# -eq 2 ] ||
	{ echo "usage: ${0##*/} 'KEY=OPTION' '/path/to/file.conf'"; exit 1; }

case "$1" in
	*=*);;
	*) echo "Malformed key '$1'" && exit 1
esac

KEY="${1%%=*}"
OPTION="${1#*=}"
CONF="$2"

# surround long options with quotes
i=0; for f in $OPTION; do
	[ $i -gt 1 ] && OPTION="\"$OPTION\"" && break
	i=$((i + 1))
done

# append required key if it doesn't exist
sudo touch "$CONF"
grep -q "$KEY" < "$CONF" || echo "$KEY" | sudo tee -a "$CONF"
sed "/.*$KEY/c $KEY=$OPTION" < "$CONF" | sudo tee "$CONF"