#!/bin/bash
# Copyright 2018 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.

#### CATEGORY=Source tree
### updates rustc_library and rustc_binary third_party dependencies

## usage: fx update-rustc-third-party
## Updates third_party/rust_crates based on the contents of
## third_party/rust_crates/Cargo.toml
##
## See https://fuchsia.dev/fuchsia-src/development/languages/rust/third_party.md
## for more details.

set -e

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh || exit $?
fx-config-read

case "$(uname -s)" in
  Linux*) ;;
  Darwin*)
    if ! [[ -x "$(command -v brew)" ]]; then
      fx-error "'brew' binary not found"
      fx-error "A homebrew <https://brew.sh> installation of opensslis required in order to update"
      fx-error "Rust third party crates on the Mac."
      exit 1
    fi

    declare -x LDFLAGS="-L$(brew --prefix)/opt/openssl/lib"
    declare -x CPPFLAGS="-I$(brew --prefix)/opt/openssl/include";;
  *) fx-error "unrecognized OS"; exit 1;;
esac

declare -x PATH=$PREBUILT_CMAKE_DIR/cmake/bin:$PATH
export RUSTC=$PREBUILT_RUST_DIR/bin/rustc
export CARGO=$PREBUILT_RUST_DIR/bin/cargo

GNAW_TARGET="host-tools/gnaw"
GNAW_BIN="${FUCHSIA_BUILD_DIR}/${GNAW_TARGET}"

if [[ "$1" == "--no-build" ]]; then
  if [ ! -f "$GNAW_BIN" ]; then
    fx-error "--no-build was specified, but $GNAW_BIN does not exist."
    fx-error "Rerun without --no-build to build cargo-gnaw."
    exit 1
  fi
else
  fx-command-run build ${GNAW_TARGET} || ( \
    fx-error "Failed to build cargo-gnaw."; \
    fx-error "This can happen after cargo-gnaw exits early."; \
    fx-error "To retry an old build of cargo-gnaw, specify --no-build."; \
    exit 1
  )
fi

export VENDOR_DIR=$FUCHSIA_DIR/third_party/rust_crates/vendor
export OWNERS_TMP=$(mktemp -d)

# preserve OWNERS files
(cd $VENDOR_DIR;
  find . -name OWNERS -exec cp --parents {} $OWNERS_TMP \;)

# this deletes OWNERS and LICENSE files
(cd $FUCHSIA_DIR; $PREBUILT_RUST_DIR/bin/cargo vendor \
  --manifest-path $FUCHSIA_DIR/third_party/rust_crates/Cargo.toml \
  $FUCHSIA_DIR/third_party/rust_crates/vendor \
  -q)

# restore OWNERS files
shopt -s nullglob
for f in $OWNERS_TMP/*
do
  cp -r $f $VENDOR_DIR/
done

# restore LICENSE* files
$FUCHSIA_DIR/scripts/rust/check_rust_licenses.py \
  --directory $FUCHSIA_DIR/third_party/rust_crates/vendor

# regenerate BUILD.gn
(cd $FUCHSIA_DIR; $GNAW_BIN \
   --manifest-path $FUCHSIA_DIR/third_party/rust_crates/Cargo.toml \
   --project-root $FUCHSIA_DIR \
   --cargo $CARGO \
  --output $FUCHSIA_DIR/third_party/rust_crates/BUILD.gn \
  --emit-metadata $FUCHSIA_BUILD_DIR/rustlang/3p-crates-metadata.json \
  --gn-bin $PREBUILT_GN \
  --skip-root)
