# 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")

group("rust") {
  testonly = true
  public_deps = [
    ":inspect-rs",
    ":tests",
  ]
}

group("tests") {
  testonly = true
  public_deps = [ ":inspect_example_rs_tests" ]
}

rustc_binary("bin") {
  name = "inspect_example_rs"

  edition = "2018"

  with_unit_tests = true

  deps = [
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:itertools",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [ "src/main.rs" ]
}

fuchsia_package_with_single_component("inspect-rs") {
  manifest = "meta/inspect-rs.cmx"
  deps = [ ":bin" ]
}

fuchsia_unittest_package("inspect_example_rs_tests") {
  deps = [ ":bin_test" ]
}
