#!/bin/bash
#
# This source file is Copyright (c) 2019, FERMI NATIONAL ACCELERATOR
#    LABORATORY.  All rights reserved.
# For details of the Fermitools (BSD) license see COPYING.

REPO="$1"
QUEUEDIR="$2"
PREFIX="$3"
CID="$4" # may be comma-separated list when touching
PUBLISHER="$5"
set -e
echo "starting transaction for publish in $REPO"
if ! cvmfs_server transaction $REPO; then
    echo "transaction start failed, trying abort and transaction again"
    cvmfs_server abort -f $REPO
    cvmfs_server transaction $REPO
fi
if [ "$PREFIX" = "ts" ]; then
    IFS="," read -r -a CIDS <<< "$CID"
    for TS in "${CIDS[@]}"; do
        SUBPATH="/cvmfs/$REPO/$PREFIX/$TS"
        echo "touching $SUBPATH"
        mkdir -p "${SUBPATH%/*}"
        echo "$PUBLISHER" > $SUBPATH
    done
else
    SUBPATH="/cvmfs/$REPO/$PREFIX/$CID"
    echo "extracting into $SUBPATH"
    mkdir -p "$SUBPATH"
    if ! tar -C "$SUBPATH" -xf "$QUEUEDIR/$CID"; then
        echo "extraction failed, aborting"
        cvmfs_server abort -f $REPO
        exit
    fi
    touch $SUBPATH/.cvmfscatalog
    echo "$PUBLISHER" > $SUBPATH/.publisher
fi
echo "publishing $CID at /cvmfs/$REPO/$PREFIX"
cvmfs_server publish $REPO
echo "done with $CID"
