#! /bin/sh # Copyright 2018 Google Inc. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. set -e BASE_DIR='platform_tools/android/apps/skqp/src/main/assets' PATH_LIST='gmkb skqp' BUCKET=skia-skqp-assets EXTANT="$(mktemp "${TMPDIR:-/tmp}/extant.XXXXXXXXXX")" gsutil ls gs://$BUCKET/ | sed "s|^gs://$BUCKET/||" > "$EXTANT" upload() { MD5=$(md5sum < "$1" | head -c 32) if ! grep -q "$MD5" "$EXTANT"; then URL="gs://${BUCKET}/$MD5" gsutil cp "$1" "$URL" > /dev/null 2>&1 & fi echo $MD5 } size() { gsutil du -s gs://$BUCKET | awk '{print $1}'; } cd "$(dirname "$0")/../../$BASE_DIR" rm -f files.checksum FILES="$(mktemp "${TMPDIR:-/tmp}/files.XXXXXXXXXX")" : > "$FILES" COUNT=$(find $PATH_LIST -type f | wc -l) INDEX=1 SHARD_COUNT=32 SIZE=$(size) find $PATH_LIST -type f | sort | while IFS= read -r FILENAME; do printf '\r %d / %d ' "$INDEX" "$COUNT" if ! [ -f "$FILENAME" ]; then echo error [${FILENAME}] >&2; exit 1; fi case "$FILENAME" in *\;*) echo bad filename: $FILENAME >&2; exit 1;; esac MD5=$(upload "$FILENAME") printf '%s;%s\n' "$MD5" "$FILENAME" >> "$FILES" if [ $(($INDEX % $SHARD_COUNT)) = 0 ]; then wait fi INDEX=$(( $INDEX + 1)) done printf '\rdone \n' upload "$FILES" > files.checksum wait D=$(( $(size) - $SIZE )) printf 'Added %d bytes to %s, %d%%\n' $D $BUCKET $(( $D * 100 / $SIZE )) rm "$EXTANT"