From 1b48f97ff2556b17f5e50ad648aff7f0b822e3e0 Mon Sep 17 00:00:00 2001 From: Ian Andwati Date: Mon, 6 Jan 2025 19:06:28 +0300 Subject: [PATCH] Update repo_sync.sh added colors added progress indicators --- scripts/repo_sync.sh | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/scripts/repo_sync.sh b/scripts/repo_sync.sh index 62a8727..57075f9 100755 --- a/scripts/repo_sync.sh +++ b/scripts/repo_sync.sh @@ -3,29 +3,53 @@ GITHUB_USERNAME="andwati" DESTINATION_FOLDER=~/cloned +GREEN="\e[32m" +BLUE="\e[34m" +RED="\e[31m" +RESET="\e[0m" + clone_repositories() { local parent_dir=$1 local repo_name=$2 - - gh repo clone "$GITHUB_USERNAME/$repo_name" "$parent_dir/$repo_name" + echo -e "${BLUE}Cloning repository: $repo_name${RESET}" + if gh repo clone "$GITHUB_USERNAME/$repo_name" "$parent_dir/$repo_name"; then + echo -e "${GREEN}Successfully cloned: $repo_name${RESET}" + else + echo -e "${RED}Failed to clone: $repo_name${RESET}" + return + fi + + cd "$parent_dir/$repo_name" || exit + if [ -f ".gitmodules" ]; then + echo -e "${BLUE}Initializing and updating submodules for: $repo_name${RESET}" git submodule init git submodule update fi } main() { + mkdir -p "$DESTINATION_FOLDER" + + echo -e "${BLUE}Fetching repositories for user: $GITHUB_USERNAME${RESET}" repos=$(gh repo list "$GITHUB_USERNAME" --visibility all --limit 100 --json name -q '.[].name') + + total_repos=$(echo "$repos" | wc -w) + count=0 + for repo in $repos; do - echo "Cloning repository: $repo" + count=$((count + 1)) + echo -e "${BLUE}Progress: [$count/$total_repos]${RESET}" clone_repositories "$DESTINATION_FOLDER" "$repo" done + + echo -e "${GREEN}Cloning complete! ${RESET}" } main