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

### 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
##
## After updating third_party/rust_crates, the pinned revision of
## third_party/rust_crates will need to be updated in garnet/manifest/third_party.
## See https://fuchsia.googlesource.com/fuchsia/+/master/docs/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 $?

case "$(uname -s)" in
  Linux*) OS=linux-x64;;
  Darwin*) OS=mac-x64;;
  *) fx-error "unrecognized OS"; exit 1;;
esac

declare -x PATH=$FUCHSIA_DIR/buildtools/$OS/cmake/bin:$PATH

if [[ "$OS" = "mac-x64" ]]; then
  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"
fi

export RUSTC=$FUCHSIA_DIR/buildtools/$OS/rust/bin/rustc

(cd $FUCHSIA_DIR; $FUCHSIA_DIR/buildtools/$OS/rust/bin/cargo run \
  --target-dir $FUCHSIA_DIR/out/cargo_vendor_target \
  --manifest-path $FUCHSIA_DIR/third_party/rust-mirrors/cargo-vendor/Cargo.toml \
  -- vendor --sync $FUCHSIA_DIR/third_party/rust_crates/Cargo.toml \
  $FUCHSIA_DIR/third_party/rust_crates/vendor)

python $FUCHSIA_DIR/scripts/rust/check_rust_licenses.py \
  --directory $FUCHSIA_DIR/third_party/rust_crates/vendor
