78 lines
1.9 KiB
Bash
Executable file
78 lines
1.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
|
|
# I acknowledge that this is weird. Autoconf/automake are just too heavy for this task.
|
|
|
|
echo "Configuring. Please answer the following questions:"
|
|
|
|
# Read through config.mk.in. Every time a variable pops up, emit the comment
|
|
# before it and prompt the user for a value, using the setting in config.mk.in as a default
|
|
|
|
TEMPFILE=.config.temp
|
|
declare -A CONFIG
|
|
|
|
COMMENT=""
|
|
|
|
echo -n > $TEMPFILE
|
|
|
|
get_default() {
|
|
V=$1
|
|
if ! [[ -e config.mk ]]; then
|
|
return ""
|
|
fi
|
|
grep "$V = " config.mk | sed -e 's/.* = \+//'
|
|
}
|
|
|
|
while read LINE <&4; do
|
|
if echo "$LINE" | grep -q '^#'; then
|
|
COMMENT=$(echo "$LINE" | sed -e 's/^#\+ *//')
|
|
elif echo "$LINE" | grep -q '^[0-9A-Z_]\+ *= *'; then
|
|
|
|
VARNAME=$(echo "$LINE" | sed -e 's/ *=.*//')
|
|
DEFAULT="$(get_default $VARNAME)"
|
|
if [[ -z "$DEFAULT" ]]; then
|
|
DEFAULT=$(echo "$LINE" | sed -e 's/^[0-9A-Z_]\+ *= *//')
|
|
fi
|
|
|
|
# if there are prefix vars that are false, we need to skip
|
|
SKIP=0
|
|
for K in "${!CONFIG[@]}"; do
|
|
if echo "$VARNAME" | grep -q "^${K}"; then
|
|
if [[ ${CONFIG[$K]} -eq 0 ]]; then
|
|
SKIP=1
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [[ SKIP -eq 0 ]]; then
|
|
echo
|
|
echo "$COMMENT"
|
|
#echo "$LINE"
|
|
echo "(default: ${DEFAULT})"
|
|
echo -n "> "
|
|
read VALUE
|
|
|
|
if [[ -z $VALUE ]]; then
|
|
VALUE="${DEFAULT}"
|
|
fi
|
|
|
|
CONFIG[${VARNAME}]="${VALUE}"
|
|
|
|
echo "# ${COMMENT}" >> $TEMPFILE
|
|
echo "${VARNAME} = ${VALUE}" >> $TEMPFILE
|
|
echo >> $TEMPFILE
|
|
fi
|
|
fi
|
|
done 4< <(cat config.mk.in)
|
|
|
|
echo
|
|
|
|
if [[ -e config.mk ]]; then
|
|
echo "Backing up your old config to config.mk.bak"
|
|
cp config.mk config.mk.bak
|
|
fi
|
|
|
|
echo "All done! Putting your configuration into config.mk."
|
|
mv $TEMPFILE config.mk
|
|
|