You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.0 KiB
51 lines
1.0 KiB
#!/bin/sh
|
|
|
|
# TODO:
|
|
# support setting flag when no upstream default
|
|
|
|
set -e +x
|
|
|
|
function fail {
|
|
echo "$0: $1" >&2
|
|
exit 1
|
|
}
|
|
|
|
USAGE="Usage: $0 FLAG [True|False]"
|
|
|
|
if [ $# -ne 2 ]; then
|
|
fail "$USAGE"
|
|
fi
|
|
|
|
FLAG=$1
|
|
|
|
NEW=$2
|
|
case $NEW in
|
|
True) OLD=False ;;
|
|
False) OLD=True ;;
|
|
*) echo "Flag value can only be set to True or False" ; exit 1 ;;
|
|
esac
|
|
|
|
CABALFILE=$(ls *.cabal)
|
|
|
|
if [ $(echo $CABALFILE | wc -w) -ne 1 ]; then
|
|
fail "There needs to be one .cabal file in the current dir!"
|
|
fi
|
|
|
|
if ! grep -q -i "^flag *$FLAG" $CABALFILE; then
|
|
fail "$CABALFILE does not have flag $FLAG"
|
|
fi
|
|
|
|
if ! grep -A3 -i "^flag *$FLAG" $CABALFILE | grep -q -i "default:"; then
|
|
fail "$CABALFILE: $FLAG flag might not have a default"
|
|
fi
|
|
|
|
if ! grep -A3 -i "^flag *$FLAG" $CABALFILE | grep -q -i "default: *$OLD"; then
|
|
fail "$CABALFILE: $FLAG flag already defaults to $NEW"
|
|
fi
|
|
|
|
if [ ! -f $CABALFILE.orig ]; then
|
|
BACKUP=.orig
|
|
fi
|
|
|
|
sed -i$BACKUP -e "/[Ff]lag *$FLAG/,/[Dd]efault: *$OLD/ s/\( \+\)\([Dd]efault:[ \t]*\)$OLD/\1\2$NEW\n\1manual: True/" $CABALFILE
|