Feat: add help, improve CLI experience
This commit is contained in:
parent
f433baafb7
commit
3ce0431d2d
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
LPLUS="\e[0;33m[\e[0;32m+\e[0;33m]\e[0m"
|
LPLUS="\e[0;33m[\e[0;32m+\e[0;33m]\e[0m"
|
||||||
LFAIL="\e[0;33m[\e[1;31mx\e[0;33m]\e[0m"
|
LFAIL="\e[0;33m[\e[1;31mx\e[0;33m]\e[0m"
|
||||||
|
@ -1,22 +1,86 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
function reqs() {
|
||||||
|
if ! command -v git &>/dev/null; then
|
||||||
|
fatal "please install git to use this tool"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo -e "\n\t\tclone-all\neasily clone/update a target's github repos\n"
|
||||||
|
echo -e "usage: $(echo $0 | awk -F '/' '{print $NF}') [OPTION...] TARGET\n"
|
||||||
|
echo -e "OPTION\n"
|
||||||
|
echo -e " -v \e[90m--verbose\e[0m\n\tenable debug output"
|
||||||
|
echo -e " -d \e[90m--destination\e[0m\n\tset clone output folder"
|
||||||
|
echo -e " -s \e[90m--ssh\e[0m\n\tuse ssh instead of https"
|
||||||
|
echo -e " -h \e[90m--help\e[0m\n\tshow this help message"
|
||||||
|
echo -e " -t \e[90m--target\e[0m\n\talternative way to set TARGET explicitly"
|
||||||
|
}
|
||||||
|
|
||||||
function setup() {
|
function setup() {
|
||||||
|
reqs
|
||||||
shopt -s extglob
|
shopt -s extglob
|
||||||
_DESTINATION=${CLONEALL_DESTINATION:-"$HOME/Workshop"}
|
_DESTINATION=${CLONEALL_DESTINATION:-"$HOME/Workshop"}
|
||||||
_DESTINATION="${_DESTINATION%%+(/)}"
|
|
||||||
_SSH=${CLONEALL_SSH:-false}
|
_SSH=${CLONEALL_SSH:-false}
|
||||||
|
_APIKEY=${GITHUB_TOKEN:-""}
|
||||||
|
_CONTEXT="users"
|
||||||
|
|
||||||
if [ "$_DESTINATION" == "." ]; then
|
if [ "$_DESTINATION" == "." ]; then
|
||||||
_DESTINATION=$(pwd)
|
_DESTINATION=$(pwd)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$1" == "--ssh" ]; then
|
_HASTARG=false
|
||||||
_SSH=true
|
while [[ $# -gt 0 ]]; do
|
||||||
shift 1
|
case $1 in
|
||||||
|
"-v" | "--verbose")
|
||||||
|
_DEBUG=true
|
||||||
|
debug "debug mode enabled"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-d" | "--destination")
|
||||||
|
_DESTINATION="$1"
|
||||||
|
debug "_DESTINATION set to: $_DESTINATION"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-s" | "--ssh")
|
||||||
|
_SSH=true
|
||||||
|
debug "using ssh instead of https"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-h" | "--help")
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"-t" | "--target")
|
||||||
|
_USERNAME="$1"
|
||||||
|
debug "target set to: $_USERNAME"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [[ "$1" == "-"* ]]; then
|
||||||
|
err "unknown argument: $1"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
_USERNAME="$1"
|
||||||
|
debug "target set to: $_USERNAME"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$_USERNAME" == "" ]]; then
|
||||||
|
fatal "need target github user"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_CONTEXT="users"
|
_DESTINATION="${_DESTINATION%%+(/)}"
|
||||||
_USERNAME="$1"
|
|
||||||
|
export _CONTEXT
|
||||||
|
export _DESTINATION
|
||||||
|
export _SSH
|
||||||
|
export _USERNAME
|
||||||
shift 1
|
shift 1
|
||||||
debug "$(mkdir -vp "${_DESTINATION}/${_USERNAME}")" || return 1
|
debug "$(mkdir -vp "${_DESTINATION}/${_USERNAME}")" || return 1
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
function get() {
|
function get() {
|
||||||
_PAGE=1
|
_PAGE=1
|
||||||
while :; do
|
while :; do
|
||||||
_APIRES=$(curl -s "https://api.github.com/$_CONTEXT/$_USERNAME/repos?page=$_PAGE&per_page=100")
|
_MYURL="https://api.github.com/$_CONTEXT/$_USERNAME/repos?page=$_PAGE&per_page=100"
|
||||||
|
debug "GET $_MYURL"
|
||||||
|
_APIRES=$(curl -s "$_MYURL")
|
||||||
if ! [[ "$_APIRES" =~ "clone_url" ]]; then
|
if ! [[ "$_APIRES" =~ "clone_url" ]]; then
|
||||||
if [[ "$_APIRES" =~ [a-zA-Z] ]]; then
|
if [[ "$_APIRES" =~ [a-zA-Z] ]]; then
|
||||||
echo "$_APIRES"
|
echo "$_APIRES"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
#debug "Update input: $1"
|
#debug "Update input: $1"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/bash
|
||||||
|
|
||||||
if ! setup "$@"; then
|
if ! setup "$@"; then
|
||||||
fatal "Failed to setup directory structure!"
|
fatal "Failed to setup directory structure!"
|
||||||
|
Loading…
Reference in New Issue
Block a user