#!/bin/sh CURRENT_DIR=$(pwd) PKGNAME=$(basename $CURRENT_DIR) FORMAT="tgz" VERSION="1.0" SPECDIR="$HOME/.specs" OUTPUT=$SPECDIR/$PKGNAME UPDATE_SOURCES=1 if [ -d $OUTPUT ] then SPECFILE=$(find -L $SPECDIR/$PKGNAME -name '*.spec' | head -1) if [ "x$SPECFILE" != "x" ] then DEDUCED_VERSION=$(sed -n 's,^\s*Version:\s*\(.*\)\s*$,\1,p' < $SPECFILE) if [ "x$DEDUCED_VERSION" != "x" ] then VERSION=$DEDUCED_VERSION fi fi fi function die { echo $@ >&2 exit 1 } function check_set { VALUE=$1 shift while [ $# -ne 0 ] do if [ "x$1" = "x$VALUE" ] then return 0 fi shift done return 1 } function compress_tar { tee } function compress_tgz { gzip } function compress_tbz2 { bzip2 } function compress_txz { xz } function extension { case $1 in tar) echo tar ;; tgz) echo tar.gz ;; tbz2) echo tar.bz2 ;; txz) echo tar.xz ;; *) die "Unkown format $1" ;; esac } while [ $# -gt 0 ] do OPTION=$1 shift case $OPTION in -f|--format) FORMAT=$1 shift ;; -v|--version) VERSION=$1 shift ;; -o|--output) OUTPUT=$1 shift ;; --no-update) UPDATE_SOURCES=0 ;; -h|--help) echo "Create archive from the current git repository usage: $0 [ options ] options: -f --format Format of the archive (see supported formats below) (default: $FORMAT) -v --version Set version of script (default: $VERSION) -o --output Output directory or file (default: $OUTPUT) --no-update Do not update sources file -h --help Show this help message Supported formats: tar tgz tbz2 txz" exit 1 ;; -*) echo "Unkown option $OPTION" >&2 exit 1 ;; esac done [ ! -d $OUTPUT -o ! -d $(dirname $OUTPUT) ] && die "$OUTPUT is not a file or directory" check_set $FORMAT tar tgz tbz2 txz || die "$FORMAT is not supported" if [ -d $OUTPUT ] then SAVE_TO=$OUTPUT/$PKGNAME-$VERSION.$(extension $FORMAT) else SAVE_TO=$OUTPUT fi git archive --format=tar --prefix=$PKGNAME-$VERSION/ HEAD | compress_$FORMAT > $SAVE_TO echo "Archive saved to $SAVE_TO" if [ $UPDATE_SOURCES -ne 0 -a -d $OUTPUT -a -f $OUTPUT/sources ] then ARCH=$(basename $SAVE_TO) cd $OUTPUT md5sum $ARCH > sources cd - >/dev/null echo "MD5 checksum saved to 'sources' file" fi