Blob Blame History Raw
#!/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