# Copyright 2017 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/testing/environments.gni")

group("device_settings") {
  testonly = true
  deps = [
    ":bin",
    ":device_settings_manager",
    ":device_settings_manager_tests",
  ]
}

rustc_binary("bin") {
  name = "device_settings_manager"
  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.devicesettings:fuchsia.devicesettings-rustc",
    "//third_party/rust_crates:bytes",
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:futures-preview",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:tempfile",
  ]
}

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

  binary = "device_settings_manager"

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

package("device_settings_manager_tests") {
  testonly = true

  deps = [
    ":bin",
  ]

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