55 lines
899 B
Bash
Executable File
55 lines
899 B
Bash
Executable File
#!/usr/bin/zsh
|
|
|
|
ROOT_PREFIX="${REPO_ROOT_DIR:-$HOME/repo}"
|
|
GIT_USER="${REPO_GIT_USER:-git}"
|
|
|
|
clean_path()
|
|
{
|
|
stripped=$1
|
|
prefix="http://"
|
|
stripped="${stripped#"$prefix"}"
|
|
prefix="https://"
|
|
stripped="${stripped#"$prefix"}"
|
|
prefix="git@"
|
|
stripped="${stripped#"$prefix"}"
|
|
stripped=$(echo "$stripped" | sed -e "s/:/\//1")
|
|
echo $stripped
|
|
}
|
|
|
|
show_help()
|
|
{
|
|
printf "Usage: repo <get|goto> <repo>\n"
|
|
}
|
|
|
|
do_get()
|
|
{
|
|
cleaned=$(clean_path $1)
|
|
output_path="$ROOT_PREFIX/$cleaned"
|
|
mkdir -p $output_path
|
|
if [ ! -d $output_path/.git ]; then
|
|
repourl=$(echo "$GIT_USER@$cleaned" | sed -e "s/\//:/1")
|
|
git clone $repourl $output_path
|
|
fi
|
|
cd $output_path
|
|
}
|
|
|
|
do_goto()
|
|
{
|
|
cleaned=$(clean_path $1)
|
|
output_path="$ROOT_PREFIX/$cleaned"
|
|
cd $output_path
|
|
}
|
|
|
|
|
|
case "$1" in
|
|
'get' )
|
|
do_get $2
|
|
do_goto $2
|
|
;;
|
|
'go' | "goto")
|
|
do_goto $2
|
|
;;
|
|
'help' | "-h"| "-help" | "--help")
|
|
show_help
|
|
esac
|