#!/bin/bash # # Copyright 2011, Tim Branyen @tbranyen # Dual licensed under the MIT and GPL licenses. # # github.sh : Automatically clone single or multiple repos into # a folder, great for setting up a git projects folder. # # CONFIGURATION: # Set the USERNAME variable below, alternatively: # git config --global github.user username. # # Set executable permissions on this script: # chmod +x github.sh. # # USAGE: # To pull repos from your GitHub # ./github.sh repo1 repo2 repo3 # # To pull repos from others GitHub # ./github.sh username/repo1 username/repo2 # # TODO: # * Nothing atm, features welcome # # vim: ts=2:sw=2:sts=2 # # # Override these with your own values USERNAME= # Internal properties GITHUB_PREFIX=git@github.com: GITHUB_USERNAME=$(git config --global github.user) # All arguments args=$* # Find each repo and pull from github for repo in $args; do # If no username configured, attempt to pull from git --config if [ -z "$USERNAME" -a -n "$GITHUB_USERNAME" ]; then USERNAME=$GITHUB_USERNAME fi # Test for username if [ -n "$USERNAME" ]; then # If a user provides the parameter username/repo pull in that specific repository. if [ `awk -v repo="$repo" -v delimit="/" 'BEGIN{print index(repo,delimit)}'` -ne 0 ]; then echo "Pulling in lol $repo"; git clone $GITHUB_PREFIX$repo.git # Use the default user specified. else echo "Pulling in $USERNAME/$repo"; git clone $GITHUB_PREFIX$USERNAME/$repo.git fi # If no $USERNAME then issue warning else echo "Please configure either this script or 'git --config github.user username'" fi done