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

rustc_binary("bin") {
  name = "setui_client"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/fdio",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-component",
    "//garnet/public/rust/fuchsia-syslog",
    "//garnet/public/rust/fuchsia-zircon",
    "//sdk/fidl/fuchsia.setui:fuchsia.setui-rustc",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:structopt",
  ]
}

package("setui_client") {
  deps = [
    ":bin",
  ]

  binary = "setui_client"

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

unittest_package("setui_client_tests") {
  deps = [
    ":bin",
  ]

  tests = [
    {
      name = "setui_client_bin_test"
    },
  ]
}
