Upload files
This commit is contained in:
commit
8e93d4e726
|
@ -0,0 +1,13 @@
|
|||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2018 Eugene Obrezkov <ghaiklor@gmail.com>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
|
@ -0,0 +1,30 @@
|
|||
# Backup My GitHub Profile
|
||||
|
||||
_Clones all your GitHub public repositories to your machine_
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- curl
|
||||
- jq
|
||||
|
||||
## Using
|
||||
|
||||
Before starting the script, you need to generate personal access token on GitHub (**with full repo access**).
|
||||
Follow this guide - [link](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)
|
||||
|
||||
Afterwards, navigate to the folder, where you want to store repos:
|
||||
|
||||
```bash
|
||||
mkdir -p /some/path/to/folder/with/backups
|
||||
cd /some/path/to/folder/with/backups
|
||||
```
|
||||
|
||||
Run the script:
|
||||
|
||||
```bash
|
||||
bash <(curl -s https://raw.githubusercontent.com/ghaiklor/backup-my-github/master/backup.sh)
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
[DWTFYWT](./LICENSE)
|
|
@ -0,0 +1,88 @@
|
|||
#!/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
|
Loading…
Reference in New Issue