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