Repository for dip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tenant-catalog/kubeflow/scripts/library.sh

101 lines
2.3 KiB

#!/usr/bin/env bash
# Common functions for Kubeflow manifest synchronization scripts
setup_error_handling() {
set -euxo pipefail
IFS=$'\n\t'
}
# Check if the git repository has uncommitted changes
check_uncommitted_changes() {
if [ -n "$(git status --porcelain)" ]; then
echo "WARNING: You have uncommitted changes"
fi
}
# Create a new git branch if it doesn't exist
create_branch() {
local branch="$1"
check_uncommitted_changes
if [ $(git branch --list "$branch") ]; then
echo "WARNING: Branch $branch already exists."
fi
if ! git show-ref --verify --quiet refs/heads/$branch; then
git checkout -b "$branch"
else
echo "Branch $branch already exists."
fi
}
clone_and_checkout() {
local source_directory="$1"
local repository_url="$2"
local repository_directory="$3"
local commit="$4"
echo "Checking out in $source_directory to $commit..."
mkdir -p "$source_directory"
cd "$source_directory"
# Clone repository if it doesn't exist
if [ ! -d "$repository_directory/.git" ]; then
git clone "$repository_url" "$repository_directory"
fi
# Checkout to specific commit
cd "$source_directory/$repository_directory"
if ! git rev-parse --verify --quiet "$commit"; then
git checkout -b "$commit"
else
git checkout "$commit"
fi
check_uncommitted_changes
}
# Copy manifests from source to destination
copy_manifests() {
local source="$1"
local destination="$2"
echo "Copying manifests..."
if [ -d "$destination" ]; then
rm -r "$destination"
fi
cp "$source" "$destination" -r
echo "Successfully copied all manifests."
}
# Update README with new commit reference
update_readme() {
local manifests_directory="$1"
local source_text="$2"
local destination_text="$3"
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i "" "s|$source_text|$destination_text|g" "${manifests_directory}/README.md" # BSD sed of Mac OSX
else
sed -i "s|$source_text|$destination_text|g" "${manifests_directory}/README.md" # GNU sed of Linux
fi
}
# Commit changes to git repository
commit_changes() {
local manifests_directory="$1"
local commit_message="$2"
local paths_to_add=("${@:3}")
cd "$manifests_directory"
for path in "${paths_to_add[@]}"; do
git add "$path"
done
git commit -s -m "$commit_message"
}