#!/bin/bash
set -ex
shopt -s extglob
COMMIT=$(git rev-parse HEAD)
# import generated content from this git reference ..
SOURCE_BRANCH=${1:-$COMMIT}
# into this git branch
GENERATED_BRANCH=${2:-generated}
git clean -f -d
# switch to generated branch for working env; and switch back later
git checkout "$GENERATED_BRANCH"
git submodule update
# Clean everything in generated branch.
rm -rf -- *
srcdir=srcdir
cleanup ()
{
exit_status=$?
rm -rf "$srcdir"
# switch back to initial ranch
git checkout "$SOURCE_BRANCH"
git submodule update
return $exit_status
}
trap cleanup EXIT
(
# Copy the actual repo into $srcdir, and generate there
mkdir "$srcdir"
cd "$srcdir"
git clone .. .
git checkout "$SOURCE_BRANCH"
git submodule update --init
make generate-all
)
# copy the relevant (generated) content from $srcdir
versions=$(sed -n 's/^VERSIONS[[:space:]]*=//p' "$srcdir"/Makefile)
for i in $versions; do
cp -r "$srcdir/$i" .
done
# source directory is not needed anymore
rm -rf "$srcdir"
# shellcheck disable=SC2086
git add $versions
# Add deleted files to the index as well
(
IFS=$'\n'
for i in $(git ls-files --deleted) ;do
git add --all "$i"
done
)
if ! git diff --cached --exit-code --quiet ; then
git commit -m "auto-sync: master commit $COMMIT"
else
echo "Nothing changed"
fi