You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

93 lines
2.4 KiB

#!/bin/bash
set -e
exec 3>&1 # make stdout available as fd 3 for the result
exec 1>&2 # redirect all output to stderr for logging
echo "BUILD_ID: $BUILD_ID"
echo "BUILD_NAME: $BUILD_NAME"
echo "BUILD_JOB_NAME: $BUILD_JOB_NAME"
echo "BUILD_PIPELINE_NAME: $BUILD_PIPELINE_NAME"
# shellcheck disable=1090
source "$(dirname $0)/common.sh"
source=$1
if [ -z "$source" ]; then
echo "usage: $0 <path/to/source>"
exit 1
fi
# for jq
PATH=/usr/local/bin:$PATH
payload=$(mktemp "$TMPDIR/rclone-resource-request.XXXXXX")
cat > "$payload" <&0
# TODO: Remove Me - DEBUGGING
echo "Payload:"
cat "$payload"
load_config "$payload"
load_files "$payload"
rclone_source_directory=$(jq -r '.params.source // ""' < "$payload")
rclone_destinations=$(jq -r '.params.destination[]? | .dir // ""' < "$payload")
if [ -z "$rclone_source_directory" ]; then
echo "invalid source directory (missing source)"
exit 1
fi
if [ -z "$rclone_destinations" ]; then
echo "invalid destination (missing destination)"
exit 1
fi
echo "Source directory: $rclone_source_directory"
echo "Destinations:"
jq -c '.params.destination[] | .dir' < "$payload"
local_source_dir="${source}/${rclone_source_directory}"
ls -alh "${local_source_dir}"
sha256=$( (find "${local_source_dir}" -type f -exec sha256sum {} \;) | cut -d ' ' -f1 )
echo "sha256:${sha256}"
# Source is always the same for each destination
rclone_source="local:${local_source_dir}"
echo "Source: ${rclone_source}"
destinations=$(jq -r '.params.destination[] | @base64' < "$payload")
echo "Using encoded destinations:"
echo " ${destinations}"
for destination in $destinations; do
_jq() {
echo "${destination}" | base64 -d | jq -r "${1}"
}
rclone_destination=$(_jq '.dir')
echo "Destination: $rclone_destination"
rclone_destination_subdir_file=$(_jq '.subdir // ""')
echo "Destination subdir file: ${rclone_destination_subdir_file}"
rclone_destination_subdir=""
if [ -n "$rclone_destination_subdir_file" ]; then
echo "Looking in ${source}/${rclone_destination_subdir_file} for subdir to use"
rclone_destination_subdir=$(head -n 1 < "${source}/${rclone_destination_subdir_file}")
fi
rclone_target="${rclone_destination}/${rclone_destination_subdir}"
echo "Target: ${rclone_target}"
rclone copy "${rclone_source}" "${rclone_target}" --config /opt/rclone/config/.rclone.conf --progress
done
jq -n "{
version: {
digest: $( (echo -n "sha256:"; echo "$sha256") | jq -R . )
}
}" >&3