# 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("bin") {
  name = "discovermgr"
  edition = "2018"

  with_unit_tests = true

  deps = [
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-component",
    "//garnet/public/rust/fuchsia-syslog",
    "//sdk/fidl/fuchsia.app.discover:fuchsia.app.discover-rustc",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//third_party/rust_crates:glob",
    "//third_party/rust_crates:maplit",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_derive",
    "//third_party/rust_crates:serde_json",
  ]
}

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

  binary = "discovermgr"

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

test_package("discovermgr_tests") {
  deps = [
    ":bin",
  ]

  resources = [
    {
      path = rebase_path("test_data/test_actions.json")
      dest = "test_actions.json"
    },
  ]

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