#!/bin/bash
# Copyright 2021 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 OWNERS files for Rust third_party dependencies

## usage: fx update-rust-3p-owners
## Updates third_party/rust_crates/vendor/*/OWNERS 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

OWNERS_TOOL_TARGET="host-tools/auto_owners"
OWNERS_TOOL_BIN="${FUCHSIA_BUILD_DIR}/${OWNERS_TOOL_TARGET}"

fx-command-run build ${OWNERS_TOOL_TARGET} || ( \
  fx-error "Failed to build rust owners tool."; \
  exit 1
)

if [ "$1" != "--no-vendor-and-gn-update" ]; then
  fx-command-run update-rustc-third-party || ( \
    fx-error "Failed to run 3p update script."; \
    exit 1
  )
fi

(cd $FUCHSIA_DIR; $OWNERS_TOOL_BIN \
  --overrides $FUCHSIA_DIR/third_party/rust_crates/owners.toml \
  --metadata $FUCHSIA_BUILD_DIR/rustlang/3p-crates-metadata.json \
  --out-dir $FUCHSIA_BUILD_DIR \
  --gn-bin $PREBUILT_GN)
