72 lines
1.3 KiB
Bash
Executable file
72 lines
1.3 KiB
Bash
Executable file
#!/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
|