#!/bin/bash
if [ -z "$1" ]; then
echo "Please provide the source repo"
exit -1
else
SRC_REPO=$1
fi
TARGET_DIR=$(realpath $(dirname "$0"))
echo "== Updating $TARGET_DIR from $SRC_REPO =="
echo
echo "== get current rev =="
cd $TARGET_DIR
CURRENT_REV=$(cat libcups_version)
echo "Current rev is $CURRENT_REV"
echo
echo "== create tmp dir =="
TMP_DIR=$(mktemp -d)
echo "Created temporary dir $TMP_DIR"
echo
echo "== clone repo =="
cd $TMP_DIR
git clone $SRC_REPO .
echo
echo "== find new stable rev =="
NEW_REV=$(git tag -l | grep -v "release" | grep -v "b" | grep -v "rc" | sort | tail -n1)
echo "Stable rev is $NEW_REV"
if [ "$CURRENT_REV" == "$NEW_REV" ] ; then
echo
echo ">>> Rev $CURRENT_REV is already the newest stable rev"
else
echo
echo "== create diff in between rev $CURRENT_REV and rev $NEW_REV =="
TMP_DIFF=$(mktemp)
git diff $CURRENT_REV $NEW_REV -- cups/ filter/ LICENSE.txt > $TMP_DIFF
echo "Diff in $TMP_DIFF"
echo
echo "== Apply diff =="
cd $TARGET_DIR
patch -p1 < $TMP_DIFF
if [ $? -ne 0 ] ; then
exit 1
fi
# update version numbers in config.h
sed -i -e "s/^\(#.*CUPS_SVERSION\).*/\1 \"CUPS $NEW_REV\"/g" config.h
sed -i -e "s:^\(#.*CUPS_MINIMAL\).*:\1 \"CUPS/${NEW_REV#v}\":g" config.h
echo
echo ">>> Updated license"
cp LICENSE.txt NOTICE
echo $NEW_REV > libcups_version
git add -A
git commit -m "Update libcups to $NEW_REV"
echo
echo ">>> Updated libcups from $CURRENT_REV to $NEW_REV"
fi
echo
echo "== Cleaning up =="
rm -f $TMP_DIFF
rm -rf $TMP_DIR