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