#!/bin/sh # Use agent GPG_TTY=$(tty) && export GPG_TTY && if AGENT=$(gpg-agent --daemon 2>/dev/null) then eval "$AGENT" && GPG_AGENT_PID=$(expr "$GPG_AGENT_INFO" : ".*:\([1-9][0-9]*\):[1-9][0-9]*$") && trap 'kill -0 2>/dev/null $GPG_AGENT_PID && kill $GPG_AGENT_PID' 0 1 2 3 15 && kill -0 "$GPG_AGENT_PID" else # agent is always on gpgconf --kill gpg-agent GPG_AGENT_PID= fi && gpg="gpg --use-agent --local-user 96AFE6CB!" || exit formats='htmldocs manpages' products () { with_sig=: with_src=echo case "$1" in with-sig) with_sig=echo shift ;; only-sig) with_sig=echo with_src=: shift ;; esac version=$1 $with_src "git-$version.tar.gz" $with_sig "git-$version.tar.sig" for fmt in $formats do $with_src "git-$fmt-$version.tar.gz" $with_sig "git-$fmt-$version.tar.sig" done } report () { ls -l "git-$1.sign" $(products with-sig "$1") } failed= for tar in git-[0-9]*.tar.gz do version=$(expr "$tar" : 'git-\(.*\)\.tar.gz$') if test -f "git-$version.tar.sig" then can_skip=yes for file in $(products with-sig "$version") do if ! test -f "$file" then can_skip=no break fi done if test "$can_skip" = yes then report "$version" continue fi fi rm -f $(products only-sig $version) files="$tar" missing= for fmt in $formats do doc="git-$fmt-$version.tar.gz" if test -f "$doc" then files="$files $doc" else missing="$missing $doc" fi done case "$missing" in ?*) echo >&2 "Missing files: $missing" failed="$failed $version" continue ;; esac sha1sum $files | $gpg --clearsign >git-$version.sign || { failed="$failed $version" continue } for file in $files do gzip -dc <"$file" >"${file%.gz}" && $gpg -b "${file%.gz}" || { failed="$failed $version" rm -f "${file%.gz}.sig" } rm -f "${file%.gz}" done case " $failed " in *" $version "*) continue ;; esac report "$version" done if test -n "$GPG_AGENT_PID" then kill "$GPG_AGENT_PID" else gpgconf --kill gpg-agent fi