summaryrefslogtreecommitdiff
path: root/bin/clone
blob: 229f4ee5e703ef8faf7cec44aa887ca743476b88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash

set -eu

args=()
for url in "$@"
do
	case $url in
		https://*|git://*)
			dir=${url#*//}
			dir=${dir%/*}
	;;	ssh://*)
			dir=${url#ssh://}
			dir=${dir#*@}
	;;	git@*)
			dir=${url#git@}
			dir=${dir/://}
			dir=${dir%/*}
	;;	*)
			args+=("$url")
			continue
	esac
	[[ $dir ]] || { echo >&2 no directory; exit 1;}
	h=${dir%%:*}
	[[ $h != $dir ]] && dir=$h/${dir#*/}
	mkdir -vp ~/src/"$dir"
	cd ~/src/"$dir"
	git clone --verbose --progress "${args[@]}" "$url"
	args=()
done