# 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/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/test/test_package.gni")

rustc_binary("locate_bin") {
  name = "locate"
  edition = "2018"

  deps = [
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/component_index/fidl:index-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
  ]

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

package("locate") {
  deps = [ ":locate_bin" ]

  meta = [
    {
      path = rebase_path("meta/locate.cmx")
      dest = "locate.cmx"
    },
  ]

  binaries = [
    {
      name = "locate"
      shell = true
    },
  ]
}

rustc_binary("locate_integration_test_bin") {
  name = "locate_integration_test"
  edition = "2018"
  source_root = "src/locate_integration_test.rs"
  deps = [
    "//sdk/fidl/fuchsia.data:fuchsia.data-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:thiserror",
  ]

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

test_package("locate_integration_test") {
  deps = [ ":locate_integration_test_bin" ]

  tests = [
    {
      name = "locate_integration_test"
      dest = "locate_integration_test"
    },
  ]
}

group("tests") {
  testonly = true

  deps = [ ":locate_integration_test" ]
}
