libretime/tools/ci-sync-docs.sh

64 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Sync the docs folder with the libretime/website repository.
set -e
error() {
echo >&2 "error: $*"
exit 1
}
command -v git > /dev/null || error "git command not found!"
usage() {
cat >&2 <<- EOF
Usage : $0 <commit_range>
Positional arguments:
commit_range Commit range to scan for changes within the docs folder.
EOF
}
if [[ $# -lt 1 ]]; then
usage
exit 1
fi
commit_range="$1"
[[ -n "$GITHUB_REF_NAME" ]] || error "GITHUB_REF_NAME variable is not set!"
[[ -n "$GITHUB_REPOSITORY" ]] || error "GITHUB_REPOSITORY variable is not set!"
git config --global user.name "libretime-bot"
git config --global user.email "libretime-bot@users.noreply.github.com"
if [[ "$GITHUB_REF_NAME" == "main" ]]; then
dest="docs"
else
dest="versioned_docs/version-$GITHUB_REF_NAME"
fi
for commit in $(git rev-list --reverse --no-merges "$commit_range" -- docs); do
git checkout "$commit"
git show \
--quiet \
--format="%B%n${GITHUB_REPOSITORY}@%H" \
"$commit" \
> commit-message
rm -fR "website/$dest"
cp -r "docs" "website/$dest"
pushd website
git add "$dest"
git diff-index --quiet HEAD -- || git commit --file=../commit-message
popd
rm commit-message
done
pushd website
git push
popd