diff options
Diffstat (limited to 'gitclone')
| -rwxr-xr-x | gitclone | 50 | 
1 files changed, 27 insertions, 23 deletions
| @@ -18,8 +18,19 @@ main()  	fi  	name=${1} -	awkstr=" /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }" +	read_config +	verify_config + +	clone_project + +	# clean in case of failure +	rm -rf ${tmp_dir} >/dev/null 2>&1 +} + +read_config() +{ +	awkstr=" /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }"  	while read -r line ; do  		set ${line} >/dev/null 2>&1  		case ${line} in @@ -39,22 +50,9 @@ main()  	done << EOF  	$(eval "awk '${awkstr}' resources/git/revisions")  EOF - -	check_project -	tmp_dir=$(mktemp -dt "${name}_XXXXX") - -	# clean out old version just in case -	if [ -d "${location}" ]; then -		rm -rf ${location} -	fi - -	clone_project - -	# clean in case of failure -	rm -rf ${tmp_dir} >/dev/null 2>&1  } -check_project() +verify_config()  {  	if [ -z "${revision+x}" ]; then  		err 'Error: revision not set' @@ -69,6 +67,13 @@ check_project()  clone_project()  { +	tmp_dir=$(mktemp -dt "${name}_XXXXX") + +	# clean out old version just in case +	if [ -d "${location}" ]; then +		rm -rf ${location} +	fi +  	git clone ${url} ${tmp_dir} || git clone ${bkup_url} ${tmp_dir} \  			|| err "ERROR: could not download ${name}" @@ -76,12 +81,8 @@ clone_project()  	cd ${tmp_dir} || err "Could not access tmp directory."  	git reset --hard ${revision}  	) -	patchdir="resources/${name}/patches" -	 -	if [ -d "${patchdir}" ]; then -		patch_project || err "ERROR: errd to patch ${name}"	 -	fi -	 + +	patch_project  	mv ${tmp_dir} ${location} && return 0  	printf "ERROR: Could not copy temp file to destination.\n" @@ -90,12 +91,15 @@ clone_project()  patch_project()  { +	patchdir="resources/${name}/patches" +  	for patchfile in ${PWD}/${patchdir}/*.patch ; do  		if [ ! -f "${patchfile}" ]; then  			continue  		fi -		( cd ${tmp_dir} -		git am ${patchfile} || return 1 +		( +		cd ${tmp_dir} +		git am ${patchfile} || err "Cannot patch project: $name"  		)  	done  } | 
