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

import("//build/host.gni")
import("//build/rust/rustc_binary.gni")
import("//build/sdk/sdk_host_tool.gni")

rustc_binary("funnel_bin") {
  output_name = "funnel"
  edition = "2021"
  sources = [
    "src/errors.rs",
    "src/logging.rs",
    "src/main.rs",
    "src/metrics.rs",
    "src/ssh.rs",
    "src/target.rs",
    "src/update.rs",
  ]
  with_unit_tests = true
  deps = [
    "//src/developer/ffx/lib/addr:lib",
    "//src/developer/ffx/lib/discovery:lib",
    "//src/developer/ffx/lib/logging:lib",
    "//src/developer/ffx/lib/timeout:lib",
    "//src/lib/analytics/rust:lib",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:camino",
    "//third_party/rust_crates:chrono",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:home",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:signal-hook",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:tracing",
    "//third_party/rust_crates:tracing-subscriber",
  ]
  test_deps = [
    "//sdk/fidl/fuchsia.net:fuchsia.net_rust",
    "//src/developer/ffx/fidl:fuchsia.developer.ffx_rust",
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:pretty_assertions",
  ]
  inputs = [ "src/cleanup_command" ]
}

group("funnel") {
  testonly = true
  deps = [
    ":funnel_bin($host_toolchain)",
    ":funnel_bin_test($host_toolchain)",
  ]
}

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

sdk_host_tool("funnel_sdk") {
  category = "partner"
  output_name = "funnel"
  deps = [ ":funnel_bin" ]
}

install_host_tools("host") {
  deps = [ ":funnel_bin" ]
  outputs = [ "funnel" ]
}
