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

rustc_binary("bin") {
  output_name = "battery_manager"
  with_unit_tests = true
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.hardware.powersource:fuchsia.hardware.powersource_rust",
    "//sdk/fidl/fuchsia.power.battery:fuchsia.power.battery_rust",
    "//sdk/fidl/fuchsia.power.battery.test:fuchsia.power.battery.test_rust",
    "//sdk/lib/device-watcher/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-fs",
    "//src/lib/fuchsia-runtime",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:tracing",
  ]

  sources = [
    "src/battery_manager.rs",
    "src/battery_simulator.rs",
    "src/main.rs",
    "src/power.rs",
  ]
}

fuchsia_component("battery_manager") {
  component_name = "battery_manager"
  manifest = "meta/battery_manager.cml"
  deps = [ ":bin" ]
}

fuchsia_package("battery-manager") {
  deps = [ ":battery_manager" ]
}

fuchsia_component("battery_manager_bin_test") {
  testonly = true
  manifest = "meta/battery_manager_bin_test.cml"
  deps = [ ":bin_test" ]
}

fuchsia_test_package("battery-manager-tests") {
  test_components = [ ":battery_manager_bin_test" ]
}

group("tests") {
  testonly = true
  public_deps = [
    ":battery-manager-tests",
    "tests:battery-manager-integration-tests",
  ]
}
