6af89aa
#!/bin/sh
6af89aa
6af89aa
# TODO:
11c364e
# support setting flag when no upstream default
6af89aa
6af89aa
set -e +x
6af89aa
11c364e
USAGE="Usage: $0 FLAG [True|False]"
6af89aa
11c364e
if [ $# -ne 2 ]; then
6af89aa
    echo "$USAGE"
6af89aa
    exit 1
6af89aa
fi
6af89aa
6af89aa
FLAG=$1
6af89aa
11c364e
NEW=$2
11c364e
case $NEW in
11c364e
    True) OLD=False ;;
11c364e
    False) OLD=True ;;
11c364e
    *) echo "Flag value can only be set to True or False" ; exit 1 ;;
11c364e
esac
6af89aa
6af89aa
CABALFILE=$(ls *.cabal)
6af89aa
6af89aa
if [ $(echo $CABALFILE | wc -w) -ne 1 ]; then
6af89aa
   echo "There needs to be one .cabal file in the current dir!"
6af89aa
   exit 1
6af89aa
fi
6af89aa
6af89aa
if ! grep -q -i "^flag *$FLAG" $CABALFILE; then
6af89aa
   echo "$CABALFILE does have flag $FLAG"
6af89aa
   exit 1
6af89aa
fi
6af89aa
6af89aa
if ! grep -A3 -i "^flag *$FLAG" $CABALFILE | grep -q -i "default:"; then
6af89aa
   echo "$CABALFILE: $FLAG flag might not have a default"
6af89aa
   exit 1
6af89aa
fi
6af89aa
6af89aa
if ! grep -A3 -i "^flag *$FLAG" $CABALFILE | grep -q -i "default: *$OLD"; then
6af89aa
   echo "$CABALFILE: $FLAG flag already defaults to $NEW"
6af89aa
   exit 1
6af89aa
fi
6af89aa
6af89aa
if [ ! -f $CABALFILE.orig ]; then
6af89aa
    BACKUP=.orig
6af89aa
fi
6af89aa
6af89aa
sed -i$BACKUP -e "/[Ff]lag *$FLAG/,/[Dd]efault: *$OLD/ s/\([Dd]efault: *\)$OLD/\1$NEW/" $CABALFILE