# 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_library.gni")

rustc_library("selectors") {
  version = "0.1.0"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.diagnostics:fuchsia.diagnostics_rust",
    "//src/sys/lib/moniker",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:nom",
    "//third_party/rust_crates:thiserror",
  ]

  test_deps = [
    "//src/lib/fuchsia",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:tempfile",
  ]

  sources = [
    "src/error.rs",
    "src/lib.rs",
    "src/parser.rs",
    "src/selectors.rs",
    "src/types.rs",
    "src/validate.rs",
  ]
}

fuchsia_unittest_package("selectors-test") {
  manifest = "meta/selectors-lib-test.cml"
  deps = [ ":selectors_test" ]
}

group("tests") {
  testonly = true
  deps = [ ":selectors-test" ]
}

group("benchmarks") {
  testonly = true
  deps = [ "bench" ]
}
