31 lines
1 KiB
Bash
Executable file
31 lines
1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
function _clone() {
|
|
if [[ "$#" -lt 1 ]]; then
|
|
echo "[!] Missing URL to clone!" >&2
|
|
return 1
|
|
fi
|
|
|
|
local url="$1"
|
|
local forge owner repo
|
|
if [[ "${url}" =~ ^ssh:\/\/[a-zA-Z0-9_\-]+@([a-zA-Z0-9_.\-]+):[0-9]+/([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_\-]+)(.git)?$ ]]; then
|
|
forge="${BASH_REMATCH[1],,}"
|
|
owner="${BASH_REMATCH[2],,}"
|
|
repo="${BASH_REMATCH[3],,}"
|
|
elif [[ "${url}" =~ ^[a-zA-Z0-9_\-]+@([a-zA-Z0-9_.\-]+):([a-zA-Z0-9_\-]+)\/([a-zA-Z0-9_\-]+)(.git)?$ ]]; then
|
|
forge="${BASH_REMATCH[1],,}"
|
|
owner="${BASH_REMATCH[2],,}"
|
|
repo="${BASH_REMATCH[3],,}"
|
|
elif [[ "${url}" =~ ^https?:\/\/([a-zA-Z0-9_.\-]+)(:[0-9]+)?\/([a-zA-Z0-9_\-]+)/([a-zA-Z0-9_\-]+)(.git)?$ ]]; then
|
|
forge="${BASH_REMATCH[1],,}"
|
|
owner="${BASH_REMATCH[3],,}"
|
|
repo="${BASH_REMATCH[4],,}"
|
|
else
|
|
echo "[!] Do not know how to handle ${url}!" >&2
|
|
return 1
|
|
fi
|
|
|
|
git clone "${url}" "${WORKSPACE_DIR}/${forge}/${owner}/${repo}"
|
|
}
|
|
|
|
_clone "$@"
|