# Copyright 2024 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/python/host.gni")
import("//build/python/python_host_test.gni")
import("//build/python/python_library.gni")

common_deps = [
  "//scripts/lib/async_utils",
  "//scripts/lib/fx_cmd",
]

python_binary("status") {
  main_source = "main.py"
  sources = [
    "collectors.py",
    "data.py",
  ]
  deps = common_deps
}

if (is_host) {
  python_host_test("status_test") {
    main_source = "tests/test_status.py"
    sources = [
      "collectors.py",
      "data.py",
      "main.py",
      "tests/data_for_test.py",
      "tests/test_status.py",
    ]
    deps = common_deps + [ "//third_party/parameterized" ]
  }
}

install_python_tool("install") {
  name = "status"
  binary = ":status"
}

group("tests") {
  testonly = true
  deps = [ ":status_test($host_toolchain)" ]
}
