Add git wrapper script
This commit is contained in:
parent
447381c63f
commit
3b0874c8dd
65
gitclone.sh
Executable file
65
gitclone.sh
Executable file
@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script clones a git repository into ~/Source/repos/<host>/<user>/<repo>
|
||||
|
||||
# It will be used as an alias for git
|
||||
|
||||
# Usage: git clone [options] <url> [directory]
|
||||
|
||||
# Check if the user is trying to clone a repository
|
||||
action=$1
|
||||
|
||||
if [ "$action" != "clone" ]; then
|
||||
git "$@"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Initialize variables
|
||||
url=""
|
||||
path=""
|
||||
options=""
|
||||
|
||||
# Parse arguments
|
||||
shift # Remove 'clone' from arguments
|
||||
for arg in "$@"; do
|
||||
if [[ -z "$url" && "$arg" != -* ]]; then
|
||||
# First non-option argument is the URL
|
||||
url="$arg"
|
||||
elif [[ -n "$url" && -z "$path" && "$arg" != -* ]]; then
|
||||
# Second non-option argument is the path
|
||||
path="$arg"
|
||||
elif [[ "$arg" == -* ]]; then
|
||||
# Option arguments
|
||||
options="$options $arg"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if URL was provided
|
||||
if [ -z "$url" ]; then
|
||||
echo "Usage: git clone [options] <url> [directory]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if the user already specified a path
|
||||
if [ -n "$path" ]; then
|
||||
git clone $options "$url" "$path"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check if the URL is https or ssh
|
||||
if [[ $url == https://* ]]; then
|
||||
host=$(echo $url | cut -d/ -f3)
|
||||
user=$(echo $url | cut -d/ -f4)
|
||||
repo=$(echo $url | cut -d/ -f5 | cut -d. -f1)
|
||||
elif [[ $url == git@* ]]; then
|
||||
host=$(echo $url | cut -d: -f1 | cut -d@ -f2)
|
||||
user=$(echo $url | cut -d: -f2 | cut -d/ -f1)
|
||||
repo=$(echo $url | cut -d/ -f2 | cut -d. -f1)
|
||||
else
|
||||
echo "Invalid URL: $url"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clone the repository with any provided options
|
||||
git clone $options "$url" ~/Source/repos/$host/$user/$repo
|
||||
exit
|
||||
Loading…
x
Reference in New Issue
Block a user