89 lines
2.3 KiB
Bash
89 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
RESET_COLOR="\\033[0m"
|
|
RED_COLOR="\\033[0;31m"
|
|
GREEN_COLOR="\\033[0;32m"
|
|
BLUE_COLOR="\\033[0;34m"
|
|
|
|
function reset_color() {
|
|
echo -e "${RESET_COLOR}\\c"
|
|
}
|
|
|
|
function red_color() {
|
|
echo -e "${RED_COLOR}\\c"
|
|
}
|
|
|
|
function green_color() {
|
|
echo -e "${GREEN_COLOR}\\c"
|
|
}
|
|
|
|
function blue_color() {
|
|
echo -e "${BLUE_COLOR}\\c"
|
|
}
|
|
|
|
function hello() {
|
|
blue_color
|
|
echo " "
|
|
echo " Backup My GitHub "
|
|
echo " "
|
|
echo " "
|
|
echo "This script will clone all your repositories from provided username to your machine"
|
|
echo "It will prompt you for your username account and personal access token"
|
|
echo "To generate token, please, refer this guide - https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line"
|
|
echo "Make sure, that your token has full access to repo scope!"
|
|
reset_color
|
|
}
|
|
|
|
function checkForCurl() {
|
|
if ! [ "$(command -v curl)" ]; then
|
|
red_color
|
|
echo "You don't have installed curl"
|
|
exit 1
|
|
else
|
|
green_color
|
|
echo "curl is present on your machine, continue..."
|
|
fi
|
|
|
|
reset_color
|
|
}
|
|
|
|
function checkForJQ() {
|
|
if ! [ "$(command -v jq)" ]; then
|
|
red_color
|
|
echo "You don't have installed jq"
|
|
exit 1
|
|
else
|
|
green_color
|
|
echo "jq is present on your machine, continue..."
|
|
fi
|
|
|
|
reset_color
|
|
}
|
|
|
|
function cloneRepositories() {
|
|
green_color
|
|
echo
|
|
read -r -p "What is your username on GitHub: " username
|
|
read -r -p "What is your personal access token: " token
|
|
echo
|
|
|
|
blue_color
|
|
repository_count=$(curl -XGET -s https://"${username}":"${token}"@api.github.com/users/"${username}" | jq -c --raw-output ".public_repos")
|
|
repositories=$(curl -XGET -s https://"${username}":"${token}"@api.github.com/users/"${username}"/repos?per_page="${repository_count}" | jq -c --raw-output ".[].ssh_url")
|
|
|
|
for repository in ${repositories}; do
|
|
echo "Cloning ${repository}..."
|
|
git clone --quiet "${repository}"
|
|
done
|
|
|
|
green_color
|
|
echo "All your repositories are successfully cloned in current directory"
|
|
}
|
|
|
|
hello
|
|
checkForCurl
|
|
checkForJQ
|
|
cloneRepositories
|