Files
gitlab-foss/scripts/update-topology-service-gem.sh
2024-10-16 21:21:46 +00:00

52 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eo pipefail
## Run this script at the root of the GitLab Rails app
repo=https://gitlab.com/gitlab-org/cells/topology-service.git
ref=${REF:-main}
tmp=tmp/gitlab-topology-service-client
gem_source="$tmp/clients/ruby"
gem_target="vendor/gems/gitlab-topology-service-client"
files_list="$gem_source/.sync"
## Check if there are uncommitted changes
if git diff --exit-code; then
echo "Clean repo"
else
echo "There are uncommitted changes. Please commit them and then run this command"
exit 1
fi
# Cloning the Topology Service Repo into a temporary directory
rm -rf "$tmp"
git clone --single-branch --branch "$ref" "$repo" "$tmp"
echo "Checked out ${ref}"
if [[ -f $files_list ]]; then
echo "List of files to sync exists. Proceeding"
else
echo "The checkout out revision doesn't contain a list of files to sync in path: clients/ruby/.sync"
exit 1
fi
prev_rev=$(cat "$gem_target/REVISION")
rev=$(git -C "$tmp" rev-parse HEAD)
short_rev=$(git -C "$tmp" rev-parse --short HEAD)
## Synchronize (create/update/delete) files
rsync -arv --delete --files-from="$files_list" "$gem_source" "$gem_target"
## Commit Changes
git add $gem_target
if git diff --exit-code HEAD $gem_target; then
echo "No changes to commit"
else
echo "Committing code"
echo "$rev" > "$gem_target/REVISION"
git add "$gem_target/REVISION"
changelog=$(git -C "$tmp" log --no-merges --pretty="- %h: %s" "$prev_rev..$rev" -- clients/ruby/)
git commit -m "Updating Topology Service Client Gem to $short_rev" -m "$changelog" -m 'Changelog: other'
fi
rm -rf "$tmp"