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

import("//build/rust/rustc_library.gni")

rustc_library("ffx_daemon_protocol_target_collection") {
  version = "0.1.0"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.developer.ffx:fuchsia.developer.ffx-rustc",
    "//sdk/fidl/fuchsia.developer.remotecontrol:fuchsia.developer.remotecontrol-rustc",
    "//sdk/fidl/fuchsia.hardware.power.statecontrol:fuchsia.hardware.power.statecontrol-rustc",
    "//sdk/fidl/fuchsia.net:fuchsia.net-rustc",
    "//src/developer/ffx/daemon/events:lib",
    "//src/developer/ffx/daemon/target:lib",
    "//src/developer/ffx/lib/diagnostics:lib",
    "//src/developer/ffx/lib/protocols:lib",
    "//src/developer/ffx/lib/rcs:lib",
    "//src/developer/ffx/lib/stream_util:lib",
    "//src/developer/ffx/lib/tasks:lib",
    "//src/lib/async-utils",
    "//src/lib/diagnostics/data/rust",
    "//src/lib/diagnostics/selectors",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:chrono",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:futures-lite",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:tracing",
  ]

  test_deps = [
    "//sdk/fidl/fuchsia.developer.remotecontrol:fuchsia.developer.remotecontrol-rustc",
    "//sdk/fidl/fuchsia.overnet:fuchsia.overnet-rustc",
    "//sdk/fidl/fuchsia.overnet.protocol:fuchsia.overnet.protocol-rustc",
    "//src/connectivity/overnet/lib/hoist",
    "//src/connectivity/overnet/lib/stream_link",
    "//src/developer/ffx/lib/addr:lib",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:async-channel",
    "//third_party/rust_crates:serde_json",
  ]

  sources = [
    "src/lib.rs",
    "src/reboot.rs",
    "src/target_handle.rs",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":ffx_daemon_protocol_target_collection_test($host_toolchain)" ]
}
