# Copyright 2019 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.

import("//build/components.gni")
import("//build/rust/rustc_binary.gni")

rustc_binary("bin") {
  name = "inspect_validator_rust_puppet"
  edition = "2024"
  testonly = true

  deps = [
    "//sdk/fidl/fuchsia.inspect:fuchsia.inspect_rust",
    "//sdk/rust/zx",
    "//src/diagnostics/validator/inspect/fidl:validate_rust",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
  ]

  sources = [ "src/main.rs" ]
  configs += [ "//build/config/rust/lints:clippy_warn_all" ]
}

fuchsia_component("inspect-validator-rust-puppet") {
  # `component_name` must be "puppet" so `children: url: "#meta/puppet.cm"` in
  # //src/diagnostics/validator/inspect/meta/validator.shard.cml can find it.
  component_name = "puppet"
  testonly = true
  manifest = "meta/inspect-validator-rust-puppet.cml"
  deps = [ ":bin" ]
}

fuchsia_package("rust") {
  testonly = true
  package_name = "rust-puppet"
  deps = [ ":inspect-validator-rust-puppet" ]
}
