#!/bin/bash
# Copyright 2023 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 external Rust dependencies with latest from crates.io

## usage: fx update-rust-3p-outdated
## Updates third_party/rust_crates/Cargo.toml based on the latest versions from
## crates.io and configuration in //third_party/rust_crates/outdated.toml.
##
## See https://fuchsia.dev/fuchsia-src/development/languages/rust/third_party.md
## for more details.
##
## Flags:
##
## --no-build      Don't build update_crates or cargo-gnaw, use cached versions.
## --no-vendor     Don't run `fx update-rustc-third-party` after updating crate versions.

readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"

source "$SCRIPT_DIR"/../lib/vars.sh || exit $?

fx-config-read

readonly UPDATE_CRATES_BIN="${FUCHSIA_BUILD_DIR}/host-tools/update_crates"

# The env-variables:
# * `$PREBUILT_CMAKE_DIR`,
# * `$PREBUILT_RUST_DIR`,
# * `$PREBUILT_RUST_CARGO_OUTDATED_DIR`,
#
# are made available by `fx-config-read`, but are not accessible
# in the Python's runtime `os.environ`. To use, we pass as parameter.
"$FUCHSIA_DIR"/scripts/rust/update-rust-3p-outdated.py "$@" \
    "--fuchsia-dir" "$FUCHSIA_DIR" \
    "--update-crates-bin" "$UPDATE_CRATES_BIN" \
    "--prebuilt-cmake-dir" "$PREBUILT_CMAKE_DIR" \
    "--prebuilt-rust-dir" "$PREBUILT_RUST_DIR" \
    "--prebuilt-rust-cargo-outdated-dir" "$PREBUILT_RUST_CARGO_OUTDATED_DIR"
