#!/bin/sh

# Simple script to perform a server-side copy of artifact via sftp,
# using the heptapod_known_hosts.ssh file.
# The main use-case is promotion from intermediate to tagged version.

set -eu

SFTP_HOST=$1
# This "key" is just a file name, content is set by file mode of CI variables
HEPTAPOD_UPLOAD_KEY=$2
SRC_ARTIFACT=$3
TARGET_ARTIFACT=$4

SFTP_COPY_BATCH=/tmp/sftp_copy_batch
rm -f ${SFTP_COPY_BATCH}  # just in case

for ext in "" .sha256sum .asc; do
    echo "cp ${SRC_ARTIFACT}${ext}" "${TARGET_ARTIFACT}${ext}" >> ${SFTP_COPY_BATCH}
done

KNOWN_HOSTS=$(realpath $(dirname $0)/heptapod_known_hosts.ssh)
SSH_FLAGS="-o IdentitiesOnly=yes -o UserKnownHostsFile=${KNOWN_HOSTS}"

if [ -n "$HEPTAPOD_UPLOAD_SSH_PORT" ]; then
      SSH_FLAGS="$SSH_FLAGS -P $HEPTAPOD_UPLOAD_SSH_PORT"
fi

# TODO it would be nice of the runner to set restrictive permissions
# this right at file creation time (perhaps based on a declarative option),
# especially since there's no job filtering except based on environments
chmod 600 ${HEPTAPOD_UPLOAD_KEY}

sftp -b ${SFTP_COPY_BATCH} \
     ${SSH_FLAGS} \
     -i ${HEPTAPOD_UPLOAD_KEY} \
     ${HEPTAPOD_UPLOAD_SSH_USER}@${SFTP_HOST}:${HEPTAPOD_UPLOAD_SSH_USER}
