#!/bin/sh -e

[ -n "$COMFORT_DIR" ] || COMFORT_DIR=/usr/share/comfort
. "$COMFORT_DIR/functions"

# ======================================================================

USAGE='[package-name...]'
DESCRIPTION="
Uploads SRPM of package to git.alt in user's home directory, either by
cloning (if remote repository doesn't exist) or by pushing (if it
exists). If package name is not specified, use a repository in current
work directory.

A successfully uploaded file is moved into $GIT_HOME_DIR/<package-name>.srpms"

# Parse command line
. "$COMFORT_DIR/getopt"

# ======================================================================

TARGET=incoming.alt:/incoming/Sisyphus/
ensure_ssh_key

# Check packages
for I in "$@"; do
	# Create upload root
	UPROOT=`mktemp -dt`
	cp "$I" $UPROOT

	# Sisyphus check, without GPG check
	LC_ALL=C sisyphus_check --no-check-gpg $UPROOT \
		|| Fatal "$I: sisyphus_check failed"

	rm -f $UPROOT/`basename $I`
	rmdir $UPROOT

	# GPG check and signing, if everything is ok
	while ! rpm --checksig "$I" | grep -q gpg; do
		echo "$I: GPG signature needed"
		rpm --addsign "$I"
	done
done

# Do real upload
for I in "$@"; do
	FINAL_DIR=$GIT_HOME_DIR/`rpm -qp --queryformat=%{name} "$I"`.srpms
	mkdir -p "$FINAL_DIR"
	echo $FINAL_DIR
	rsync -avut --partial --stats -e ssh "$I" $TARGET \
		>>"$FINAL_DIR/rsync-upload.log" 2>&1 \
	&& mv -i "$I" "$FINAL_DIR" \
	|| Fatal "$I: publish failed"
done
