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.
|
|
#!/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
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}"
echo "Generating SHA256" (find "${local_source_dir}" -type f -exec sha256sum {} \;) | cut -d ' ' -f1 | xargs echo /tmp/rclone_source.sha256 sha256=$(sha256sum /tmp/rclone_source.sha256 | 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') rclone_destination_subdir_file=$(_jq '.subdir // ""') rclone_dedupe=$(_jq '.dedupe // "false"') rclone_dedupe_mode=$(_jq '.dedupeMode // "newest"')
echo "Destination: $rclone_destination" echo "Destination subdir file: ${rclone_destination_subdir_file}" echo "Run dedupe: ${rclone_dedupe}" echo "Dedupe mode: ${rclone_dedupe_mode}"
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 --size-only --progress --stats=2s
if [[ "$rclone_dedupe" == "true" ]]; then echo "Running Dedupe for: ${rclone_target}" rclone dedupe --dedupe-mode "${rclone_dedupe_mode}" "${rclone_target}" fi
done
jq -n "{ version: { digest: $( echo -n "sha256:$sha256" | jq -R . ) } }" >&3
|