# 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")
import("//build/testing/environments.gni")

group("tests") {
  testonly = true
  public_deps = [ ":terminal_settings_agent_tests" ]
}

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

  deps = [
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.terminal:fuchsia.terminal-rustc",
    "//sdk/fidl/fuchsia.ui.types:fuchsia.ui.types-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]
}

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

  deps = [ ":bin" ]

  binary = "terminal_settings_agent"
}

test_package("terminal_settings_agent_tests") {
  deps = [ ":bin_test" ]

  tests = [
    {
      name = "terminal_settings_agent_bin_test"
      environments = basic_envs
    },
  ]
}
