# 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")
import("//src/developer/ffx/build/ffx_plugin.gni")

ffx_plugin("ffx_storage_blackout_minfs_tree") {
  version = "0.1.0"
  edition = "2021"
  args_sources = [ "src/args.rs" ]
  sources = [ "src/lib.rs" ]
  deps = [
    "//src/lib/fuchsia-async",
    "//tools/blackout/blackout-host",
  ]
}

rustc_binary("blackout-minfs-tree-target-bin") {
  output_name = "blackout_minfs_tree_target_bin"
  with_unit_tests = true
  testonly = true
  edition = "2021"
  deps = [
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-fs",
    "//src/lib/storage/fs_management/rust:fs_management",
    "//src/sys/pkg/lib/fuchsia-merkle",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:byteorder",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:rand",
    "//tools/blackout/blackout-target",
  ]
  data_deps = [ "//src/storage/bin/minfs" ]
  source_root = "src/target.rs"

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

fuchsia_component("blackout-minfs-tree-target-component") {
  testonly = true
  deps = [ ":blackout-minfs-tree-target-bin" ]
  manifest = "meta/blackout_minfs_tree_target.cml"
}

fuchsia_package("blackout-minfs-tree-target") {
  testonly = true
  deps = [ ":blackout-minfs-tree-target-component" ]
}

group("minfs-tree") {
  testonly = true
  public_deps = [ ":blackout-minfs-tree-target" ]
}
