Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 15 additions & 14 deletions assets/check
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,27 @@

set -e

# parse incoming config data
payload=`cat`
bucket=$(echo "$payload" | jq -r '.source.bucket')
prefix="$(echo "$payload" | jq -r '.source.path // ""')"

# export for `aws` cli
AWS_ACCESS_KEY_ID=$(echo "$payload" | jq -r '.source.access_key_id // empty')
AWS_SECRET_ACCESS_KEY=$(echo "$payload" | jq -r '.source.secret_access_key // empty')
AWS_DEFAULT_REGION=$(echo "$payload" | jq -r '.source.region // empty')
payload=$(cat)
bucket=$(printf '%s\n' "$payload" | jq -r '.source.bucket // ""')
path=$(printf '%s\n' "$payload" | jq -r '.source.path // ""')
AWS_ACCESS_KEY_ID=$(printf '%s\n' "$payload" | jq -r '.source.access_key_id // ""')
AWS_SECRET_ACCESS_KEY=$(printf '%s\n' "$payload" | jq -r '.source.secret_access_key // ""')
AWS_DEFAULT_REGION=$(printf '%s\n' "$payload" | jq -r '.source.region // ""')

# Due to precedence rules, must be unset to support AWS IAM Roles.
if [ -n "$AWS_ACCESS_KEY_ID" ] && [ -n "$AWS_SECRET_ACCESS_KEY" ]; then
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
fi

# Export AWS_DEFAULT_REGION if set
[ -n "$AWS_DEFAULT_REGION" ] && export AWS_DEFAULT_REGION

# Consider the most recent LastModified timestamp as the most recent version.
timestamps=$(aws s3api list-objects --bucket $bucket --prefix "$prefix" --query 'Contents[].{LastModified: LastModified}')
recent="$(echo $timestamps | jq -r 'max_by(.LastModified)')"
echo "[$recent]"
timestamps=$(aws s3api list-objects --bucket "$bucket" --prefix "$path" --query 'Contents[].{LastModified: LastModified}')
if [ "$timestamps" != "null" ]; then
recent="$(printf '%s\n' "$timestamps" | jq -r 'max_by(.LastModified)')"
else
recent=''
fi

printf '%s\n' "[$recent]"
6 changes: 3 additions & 3 deletions assets/emit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
set -e

# give back a(n empty) version, so that the check passes when using `in`/`out`
echo "{
\"version\": {}
}"
echo '{
"version": {}
}'
25 changes: 11 additions & 14 deletions assets/in
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,25 @@ if [ -z "$dest" ]; then
fi
#######################################

# parse incoming config data
payload=`cat`
bucket=$(echo "$payload" | jq -r '.source.bucket')
path=$(echo "$payload" | jq -r '.source.path // ""')
options=$(echo "$payload" | jq -r '.source.options // [] | join(" ")')

# export for `aws` cli
AWS_ACCESS_KEY_ID=$(echo "$payload" | jq -r '.source.access_key_id // empty')
AWS_SECRET_ACCESS_KEY=$(echo "$payload" | jq -r '.source.secret_access_key // empty')
AWS_DEFAULT_REGION=$(echo "$payload" | jq -r '.source.region // empty')
payload=$(cat)
bucket=$(printf '%s\n' "$payload" | jq -r '.source.bucket // ""')
path=$(printf '%s\n' "$payload" | jq -r '.source.path // ""')
options=$(printf '%s\n' "$payload" | jq -r '.source.options // [] | join(" ")')
AWS_ACCESS_KEY_ID=$(printf '%s\n' "$payload" | jq -r '.source.access_key_id // ""')
AWS_SECRET_ACCESS_KEY=$(printf '%s\n' "$payload" | jq -r '.source.secret_access_key // ""')
AWS_DEFAULT_REGION=$(printf '%s\n' "$payload" | jq -r '.source.region // ""')

# Due to precedence rules, must be unset to support AWS IAM Roles.
if [ -n "$AWS_ACCESS_KEY_ID" ] && [ -n "$AWS_SECRET_ACCESS_KEY" ]; then
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
fi

# Export AWS_DEFAULT_REGION if set
[ -n "$AWS_DEFAULT_REGION" ] && export AWS_DEFAULT_REGION

echo "Downloading from S3..."
eval aws s3 sync "s3://$bucket/$path" $dest $options
eval "set -- $options" # transform options list into argument vector elements
aws s3 sync "s3://$bucket/$path" "$dest" "$@"
echo "...done."

. "$(dirname $0)/emit.sh" >&3
. "$(dirname "$0")/emit.sh" >&3
30 changes: 14 additions & 16 deletions assets/out
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,19 @@ fi

# disable trace since we're interacting with sensitive values
set +x
# parse incoming config data
payload=`cat`
bucket=$(echo "$payload" | jq -r '.source.bucket')
path=$(echo "$payload" | jq -r '.source.path // ""')
options=$(echo "$payload" | jq -r '.source.options // [] | join(" ")')
change_dir_to=$(echo "$payload" | jq -r '.source.change_dir_to // "." ')

# export for `aws` cli
AWS_ACCESS_KEY_ID=$(echo "$payload" | jq -r '.source.access_key_id // empty')
AWS_SECRET_ACCESS_KEY=$(echo "$payload" | jq -r '.source.secret_access_key // empty')
AWS_DEFAULT_REGION=$(echo "$payload" | jq -r '.source.region // empty')

payload=$(cat)
bucket=$(printf '%s\n' "$payload" | jq -r '.source.bucket // ""')
path=$(printf '%s\n' "$payload" | jq -r '.source.path // ""')
change_dir_to=$(printf '%s\n' "$payload" | jq -r '.source.change_dir_to // ""')
options=$(printf '%s\n' "$payload" | jq -r '.source.options // [] | join(" ")')
AWS_ACCESS_KEY_ID=$(printf '%s\n' "$payload" | jq -r '.source.access_key_id // ""')
AWS_SECRET_ACCESS_KEY=$(printf '%s\n' "$payload" | jq -r '.source.secret_access_key // ""')
AWS_DEFAULT_REGION=$(printf '%s\n' "$payload" | jq -r '.source.region // ""')

# Due to precedence rules, must be unset to support AWS IAM Roles.
if [ -n "$AWS_ACCESS_KEY_ID" ] && [ -n "$AWS_SECRET_ACCESS_KEY" ]; then
export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY
fi

# re-enable trace since we're done interacting with sensitive values
Expand All @@ -40,10 +37,11 @@ set -x
# Export AWS_DEFAULT_REGION if set
[ -n "$AWS_DEFAULT_REGION" ] && export AWS_DEFAULT_REGION

cd ${source}/${change_dir_to}
cd "${source}/${change_dir_to}"

echo "Uploading to S3..."
eval aws s3 sync . "s3://$bucket/$path" $options
eval "set -- $options"
aws s3 sync . "s3://$bucket/$path" "$@"
echo "...done."

. "$(dirname $0)/emit.sh" >&3
. "$(dirname "$0")/emit.sh" >&3