#!/bin/sh proj="iperf" if [ "x$2" != "x" ]; then tag=$2 else tag=`awk '/IPERF_VERSION / { gsub(/"/, "", $3); print $3 }' src/version.h` fi dirname=`echo $tag $proj | awk '{ gsub(/-ALPHA/, "a", $1); gsub(/-BETA/, "b", $1); gsub(/-RELEASE/, "", $1); print $2"-"$1 }'` # echo tag $tag # echo dirname $dirname do_tag () { git tag -s -m "tagging $tag" $tag } do_tar () { tarball=${dirname}.tar.gz rm -f ${tarball} git archive --format=tar --prefix ${dirname}/ ${tag} | gzip -9 > ${tarball} # Compute SHA256 hash case `uname -s` in FreeBSD) sha=sha256 ;; Linux) sha=sha256sum ;; Darwin) sha="shasum -a 256" ;; *) sha=echo ;; esac ${sha} ${tarball} | tee ${tarball}.sha256 } usage () { cat <<EOF $0: tag|tar tag -- create a tag tar -- create a tarball from a tag General use is to do: ./$0 tag ./$0 tar An optional argument may be specified to both the tag and tar subcommands to explicitly specify a tag string. If not specified, the contents of src/version.h are used. EOF } case $1 in tag) do_tag ;; tar) do_tar ;; *) echo "unknown command: $1"; usage ;; esac exit