Files
Odoo-Build/bin/set-github-repo-default-branch

50 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# Set your GitHub personal access token and organization name
ACCESS_TOKEN=""
ORG_NAME="Mint-System"
NEW_DEFAULT_BRANCH="18.0"
if [[ -a ".env" && "$(cat .env | sed 's/^#.*//g')" ]]; then
export $(cat .env | sed 's/^#.*//g' | xargs)
fi
# Check if the new default branch exists in the repository
check_branch_existence() {
local repo_name=$1
local branch=$2
curl -s -o /dev/null -I -w "%{http_code}" -H "Authorization: token $ACCESS_TOKEN" \
"https://api.github.com/repos/$ORG_NAME/$repo_name/branches/$branch"
}
# Get a list of repositories in the organization
REPOS=$(curl -s -H "Authorization: token $ACCESS_TOKEN" \
"https://api.github.com/orgs/$ORG_NAME/repos?per_page=100")
# Loop through each repository in the organization
for repo in $(echo "$REPOS" | jq -r '.[] | @base64'); do
name=$(echo "$repo" | base64 --decode | jq -r '.name')
default_branch=$(echo "$repo" | base64 --decode | jq -r '.default_branch')
# Check if the repository's default branch doesn't match the new default branch
if [ "$default_branch" != "$NEW_DEFAULT_BRANCH" ]; then
# Check if the new default branch exists in the repository
if [ "$(check_branch_existence "$name" "$NEW_DEFAULT_BRANCH")" = "200" ]; then
# Get the current default branch of the repository
current_default_branch=$(curl -s -H "Authorization: token $ACCESS_TOKEN" \
"https://api.github.com/repos/$ORG_NAME/$name" | jq -r '.default_branch')
# Check if the current default branch matches the old default branch name
echo "Updating default branch for '$name' to '$NEW_DEFAULT_BRANCH'..."
curl -X PATCH -H "Authorization: token $ACCESS_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
-d "{\"default_branch\": \"$NEW_DEFAULT_BRANCH\"}" \
"https://api.github.com/repos/$ORG_NAME/$name"
else
echo "New default branch '$NEW_DEFAULT_BRANCH' doesn't exist in '$name'. Skipping update."
fi
fi
done