You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
731 B
Bash
29 lines
731 B
Bash
#!/usr/bin/zsh
|
|
|
|
emulate -L zsh
|
|
setopt err_exit no_unset pipe_fail extended_glob xtrace
|
|
|
|
: ${GITSTATUS_DIR:=${${(%):-%x}:A:h}}
|
|
: ${GITSTATUS_URL:=https://github.com/romkatv/gitstatus.git}
|
|
|
|
readonly GITSTATUS_DIR GITSTATUS_URL
|
|
readonly -a IGNORE=(pull-upstream.zsh README.md)
|
|
|
|
() {
|
|
local repo && repo="$(mktemp -d ${TMPDIR:-/tmp}/gitstatus-pull-upstream.XXXXXXXXXX)"
|
|
trap "rm -rf ${(q)repo}" EXIT
|
|
git clone --depth 1 --single-branch $GITSTATUS_URL $repo
|
|
|
|
local dst
|
|
for dst in $GITSTATUS_DIR/**/*(.,@); do
|
|
local f=${dst#$GITSTATUS_DIR/}
|
|
(( ! ${IGNORE[(I)$f]} )) || continue
|
|
local src=$repo/$f
|
|
[[ -f $src ]] && {
|
|
mkdir -p ${dst:h} && cp -f $src $dst || return
|
|
} || {
|
|
rm -f $dst
|
|
}
|
|
done
|
|
}
|