#!/bin/sh
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide.
# This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication
# along with this software.
# If not, see .
. /etc/mgasoft.conf
function check_softname()
{
local softname="$1"
test -n "$softname" || return 1
echo "$softname" | fgrep -q .. && return 1
echo "$softname" | fgrep -q / && return 1
return 0
}
function check_softrel()
{
check_softname $@
}
function usage()
{
local cmd="$1"
local exitval=$2
case "$cmd" in
tagrelease)
cat < /dev/null 2>&1
then
echo "error: $softname does not exists" >&2
exit 2
fi
if svn ls "$softdir/tags/$softrel" > /dev/null 2>&1
then
echo "error: $softname version $softrel already exists" >&2
exit 2
fi
if ! svn ls "$softdir/tags" > /dev/null 2>&1
then
svn mkdir -q -m "create tags directory for $softname" "$softdir/tags"
fi
svn cp -q -m "tag $softname version $softrel" "$softdir/trunk" "$softdir/tags/$softrel"
}
function gettar()
{
[ "$1" == "--help" ] && usage gettar 0
[ $# -ne 2 ] && usage gettar 1
local softname="$1"
local softrel="$2"
check_softname "$softname" || exit 1
check_softrel "$softrel" || exit 1
local oldpwd=$PWD
local tmpdir=$(mktemp -d)
cd $tmpdir
if [ "$softrel" == "trunk" ]
then
local svnpath="$anonsvn_soft/$softname/trunk"
else
local svnpath="$anonsvn_soft/$softname/tags/$softrel"
fi
if ! svn export -q "$svnpath" "$softname-$softrel"
then
echo "Error exporting $softname-$softrel" >&2
rm -Rf "$tmpdir"
exit 2
fi
tar cvJf "$oldpwd/$softname-$softrel.tar.xz" "$softname-$softrel"
cd "$oldpwd"
rm -Rf "$tmpdir"
echo "Created $softname-$softrel.tar.xz"
}
function publishrelease()
{
[ "$1" == "--help" ] && usage publish 0
[ $# -ne 2 ] && usage publish 1
local softname="$1"
local softrel="$2"
check_softname "$softname" || exit 1
check_softrel "$softrel" || exit 1
local svnpath="$svn_soft/$softname/tags/$softrel"
if ! svn ls "$svnpath" > /dev/null 2>&1
then
echo "error: $softname version $softrel does not exist" >&2
exit 2
fi
local pubdir="$svn_soft_publish/$softname"
if svn ls "$pubdir/$softrel" > /dev/null 2>&1
then
echo "$softname version $softrel already published" >&2
exit 2
fi
if ! svn ls "$pubdir" > /dev/null 2>&1
then
svn mkdir -q -m "create directory for $softname" "$pubdir"
fi
local tmpdir=$(mktemp -d)
pushd "$tmpdir" > /dev/null
svn co -q "$pubdir"
cd "$softname"
touch "$softrel"
svn add -q "$softrel"
svn ci -q -m "publish $softname version $softrel"
popd > /dev/null
rm -Rf "$tmpdir"
}
case "$1" in
tag)
shift
tagrelease $@
;;
tar)
shift
gettar $@
;;
publish)
shift
publishrelease $@
;;
*)
usage '' 1
;;
esac