#!/usr/bin/env bash
# Copyright 2016 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

set -euf -o pipefail

readonly JIRI_REPO_URL="https://fuchsia.googlesource.com/jiri"
readonly GS_BUCKET_URL="https://fuchsia-build.storage.googleapis.com/jiri"

# Accept the first argument as a list of OSes to build for.  Possible values
# are valid GOOS strings from https://golang.org/doc/install/source#environment.
if [[ $# -eq 1 ]]; then
  readonly TARGETS="${1}"
else
  readonly TARGETS="linux darwin"
fi

# Determine and validate the version of jiri.
readonly HOST_OS=$(uname | tr '[:upper:]' '[:lower:]')
readonly COMMIT_URL="${JIRI_REPO_URL}/+refs/heads/master?format=JSON"
readonly VERSION=$(curl -sSf "${COMMIT_URL}" | sed -n 's/.*"value": "\([0-9a-f]\{40\}\)"/\1/p')
if [[ -z ${VERSION} ]]; then
  echo "Cannot determine the latest jiri version" 1>&2
  exit 1
fi

# Do all our work in a temporary directory, then rm it when we're done.
readonly TEMP_DIR="$(mktemp -d)"
trap "rm -rf -- "${TEMP_DIR}"" EXIT

failed=false
RED='\033[0;31m'
NC='\033[0m'
readonly ARCHS="amd64 arm64"
for target in ${TARGETS}; do
  for arch in ${ARCHS}; do
    if [[ "$target" == "darwin" && "$arch" == "arm64" ]]; then
      continue
    fi
    os=$(echo ${target} | sed 's/darwin/mac/')
    tmpdir="${TEMP_DIR}/jiri-${os}-${arch}"
    mkdir -p ${tmpdir}

    # Download the jiri binary.
    if ! curl -sSf -o "${tmpdir}/jiri" "${GS_BUCKET_URL}/${target}-${arch}/${VERSION}"; then
      echo -e "${RED}Failed downloading prebuilt jiri binary.${NC}" 1>&2
      echo -e "${RED}${GS_BUCKET_URL}/${target}-${arch}/${VERSION}${NC}"
      if [[ "$arch" != "arm64" ]]; then
        failed=true
      fi
      continue
    fi
    chmod 755 "${tmpdir}/jiri"

    # Upload the jiri binary to CIPD
    cipd create -name "fuchsia/tools/jiri/${os}-${arch}" -in "${tmpdir}" -ref latest -tag "git_repository:https://fuchsia.googlesource.com/jiri" -tag "git_revision:${VERSION}"
  done
done

# fail if any os-arch failed
if [[ "$failed" = true ]]; then
  echo -e "${RED}Failure${NC}"
  exit 1
fi
