(bash) update repo cl function

This commit is contained in:
jc 2024-10-15 17:12:09 -04:00
commit f5368c7109

View file

@ -145,25 +145,37 @@ fcd() {
cl() { cl() {
local url=$1 local url=$1
local ghq_dir="$HOME/ghq" local ghq_dir="$HOME/ghq"
local argc=$#
local project_name=""
local repository_name=""
local url=""
# extract project name # extract project name
if [[ $url =~ git@github\.com:([^/]+)/([^/]+)\.git ]]; then if [[ $url =~ git@git(lab|hub)\.com:([^/]+)/([^/]+)\.git ]]; then
local project_name="${BASH_REMATCH[1]}" local project_name="${BASH_REMATCH[2]}"
local repository_name="${BASH_REMATCH[2]}" local repository_name="${BASH_REMATCH[3]}"
elif [[ $url =~ https://github\.com/([^/]+)/([^/]+)\.git ]]; then elif [[ $url =~ https://git(lab|hub)\.com/([^/]+)/([^/]+)\.git ]]; then
local project_name="${BASH_REMATCH[1]}" local project_name="${BASH_REMATCH[2]}"
local repository_name="${BASH_REMATCH[2]}" local repository_name="${BASH_REMATCH[3]}"
elif [[ $# -ne 0 ]]; then elif [[ $# -ne 0 ]]; then
local project_name="juancwu" repository_name=$1
local repository_name="$url" namespace="juancwu"
local url="git@github.com:juancwu/$repository_name.git" # default domain to github
local domain="hub"
# possible domain given
if [[ $# -eq 2 ]]; then
domain=$1
repository_name=$2
fi
url="git@git$domain.com:$namespace/$repository_name.git"
else else
echo -e "$ERROR Invalid URL format" echo -e "$ERROR Invalid URL format"
return 1 return 1
fi fi
# check if directory for project exists or not # check if directory for project exists or not
local project_dir="${ghq_dir}/${project_name}/${repository_name}" local project_dir="${ghq_dir}/${namespace}/${repository_name}"
echo $project_dir
if [[ ! -d $project_dir ]]; then if [[ ! -d $project_dir ]]; then
mkdir -p $project_dir mkdir -p $project_dir
fi fi