f4b0280
#!/bin/sh
f4b0280
f4b0280
set -e +x
f4b0280
31a55c3
function fail {
31a55c3
    echo "$0: $1" >&2
31a55c3
    exit 1
31a55c3
}
31a55c3
f4b0280
USAGE="Usage: $0 dep"
f4b0280
f4b0280
if [ $# -ne 1 ]; then
31a55c3
    fail "$USAGE"
f4b0280
fi
f4b0280
f4b0280
DEP=$1
f4b0280
CABALFILE=$(ls *.cabal)
f4b0280
f4b0280
if [ $(echo $CABALFILE | wc -w) -ne 1 ]; then
31a55c3
   fail "There needs to be one .cabal file in the current dir!"
f4b0280
fi
f4b0280
f4b0280
BREAK=[^[:alnum:]-]
f4b0280
f4b0280
if ! grep -q "$BREAK$DEP$BREAK[^,]*" $CABALFILE; then
31a55c3
   fail "$CABALFILE does not match: $DEP"
f4b0280
fi
f4b0280
f4b0280
if [ ! -f $CABALFILE.orig ]; then
f4b0280
    BACKUP=.orig
f4b0280
fi
f4b0280
f4b0280
if grep -q "$BREAK$DEP$BREAK[^,]*&&" $CABALFILE; then
f4b0280
    sed -i$BACKUP -e "s/\($BREAK$DEP$BREAK[^&,]*[^ ]\+\) *&&[^,]*/\1/g" $CABALFILE
f4b0280
fi
f4b0280
f4b0280
if grep -q "$BREAK$DEP$BREAK[^,]*==" $CABALFILE; then
f4b0280
    sed -i$BACKUP -e "s/\($BREAK$DEP$BREAK[^=,]*\)==\([^,*]*\)\.\*/\1>=\2/g" $CABALFILE
f4b0280
fi