Blame SOURCES/cabal-tweak-flag

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