#!/bin/zsh DO=$0 main() { args url! repo_path head_sha1 rebuild-if-refetch eval $(getvars) local scheme rest repo_path head_sha1 scheme=${url%%:*} rest=/${${${url#*:}#/}#/} repo_path=${DO:h:a}/downloads/git/${scheme}${rest:a}.git setvar repo_path $repo_path if [[ -d $repo_path ]]; then if ! (cd $repo_path && git fetch -u -v -f origin master); then rm -rf $repo_path || die "Failed to remove ${(qqq)repo_path}" git clone --depth=1 --mirror $url $repo_path \ || die "Failed to fetch ${(qqq)url}" fi else git clone --depth=1 --mirror $url $repo_path \ || die "Failed to fetch ${(qqq)url}" fi head_sha1=$(cd $repo_path && git show --format=oneline -s HEAD) ||\ die "Could not obtain HEAD sha1sum" head_sha1=${head_sha1%% *} setvar head_sha1 $head_sha1 __check_deps__+='if { test -d '${(qqq)repo_path}$' }\n' __check_deps__+='if { pipeline -d { printf "%s\n" '${(qqq)head_sha1}$' } fdmove 3 0 pipeline -d { pipeline { cd '${(qqq)repo_path}$' git show --format=oneline -s HEAD } sed "s/ *//" } cmp -s - /proc/self/fd/3 }\n' } . ./common.zsh # vim: fileencoding=utf8 ft=zsh noet sw=4 ts=4 sts=4