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.
101 lines
2.3 KiB
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"
|
|
} |