# 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/components.gni")
import("//build/rust/rustc_binary.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 = [
    "//sdk/fidl/fuchsia.devicesettings:fuchsia.devicesettings-rustc",
    "//src/lib/fdio/rust:fdio",
    "//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:bytes",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:tempfile",
    "//third_party/rust_crates:thiserror",
  ]

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

fuchsia_package_with_single_component("device_settings_manager") {
  deps = [ ":bin" ]
  manifest = "meta/device_settings_manager.cml"
}

fuchsia_unittest_package("device_settings_manager_tests") {
  manifest = "meta/device_settings_manager_bin_test.cml"
  deps = [ ":bin_test" ]
  test_specs = {
  }
}

group("tests") {
  testonly = true
  deps = [ ":device_settings_manager_tests" ]
}
