| #! /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" |