Blob Blame History Raw
#!/bin/bash

name=etr
delfiles="data/fonts/outline.ttf"

set -e

usage() {
    cat << EOF >&2
Usage: $0 $name-<VERSION>.tar.xz $name-<VERSION>.p.tar.xz
EOF
    exit 1;
}

if [ $# -ne 2 ]; then
    usage
fi

src="$1"
dst="$2"

dstregex="^$name-\([0-9]\+\(\.[0-9]\+\)*\.p\)\.tar\.\(gz\|bzip2\|xz\)\$"
srcregex="$(echo "$dstregex" | sed 's|\\\.p||g')"

fail=0
if [ -n "$(echo "$src" | sed "s/$srcregex//g")" ]; then
    echo "Invalid source tarball filename" >&2
    fail=1
fi
if [ -n "$(echo "$dst" | sed "s/$dstregex//g")" ]; then
    echo "Invalid destination tarball filename" >&2
    fail=1
fi
if [ $fail -ne 0 ]; then
    usage
fi

eval `echo "$src" | sed "s/$srcregex/srcver='\1'\;srcext='\3'/g"`
eval `echo "$dst" | sed "s/$dstregex/dstver='\1'\;dstext='\3'/g"`

case "$srcext" in
    gz)
        unpack=zcat
        ;;
    bz2)
        unpack=bzcat
        ;;
    xz)
        unpack=xzcat
        ;;
    *)
        echo "Invalid source extension: $srcext" >&2
        fail=1
        ;;
esac

case "$dstext" in 
    gz)
        pack=gzip
        ;;
    bz2)
        pack=bzip2
        ;;
    xz)
        pack=xz
        ;;
    *)
        echo "Invalid destination extension: $dstext" >&2
        fail=1
esac

if [ $fail -ne 0 ]; then
    usage
fi

tmpdir="$(mktemp -d)"
trap "rm -rf '$tmpdir'" EXIT

cwd="$PWD"
"$unpack" "$src" | (cd "$tmpdir" && tar xf -)
for f in $delfiles; do
    rm -f "${tmpdir}/${name}-${srcver}/$f"
done
mv "${tmpdir}/${name}-${srcver}" "${tmpdir}/${name}-${dstver}"
(cd "$tmpdir" && tar cvf - "${name}-${dstver}") | \
    "$pack" > "${name}-${dstver}.tar.${dstext}"