# Copyright 2026 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.

load("@platforms//host:constraints.bzl", "HOST_CONSTRAINTS")
load("//build/bazel/rules/rust:defs.bzl", "rustc_library")

package(default_applicable_licenses = ["//:license"])

rustc_library(
    name = "lib",
    srcs = [
        "src/lib.rs",
        "src/strict.rs",
        "src/test.rs",
    ],
    crate_name = "ffx_executor",
    edition = "2024",
    target_compatible_with = HOST_CONSTRAINTS,
    test_deps = ["//src/lib/fuchsia"],
    version = "0.1.0",
    visibility = ["//src/developer/ffx:__subpackages__"],
    with_host_unit_tests = True,
    deps = [
        "//src/developer/ffx/lib/writer:lib",
        "//src/lib/fuchsia-async",
        "//third_party/rust_crates/vendor:anyhow",
        "//third_party/rust_crates/vendor:futures",
        "//third_party/rust_crates/vendor:log",
        "//third_party/rust_crates/vendor:schemars",
        "//third_party/rust_crates/vendor:serde",
        "//third_party/rust_crates/vendor:serde_json",
        "//third_party/rust_crates/vendor:thiserror",
    ],
)
