# 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/rust/rustc_library.gni")
import("//build/sdk/sdk_documentation.gni")

# This list should only contain schemas that are currently exported outside of
# the Fuchsia source tree.
schemas = [
  # "banjo_library.json",
  "cc_prebuilt_library.json",
  "cc_source_library.json",
  "common.json",
  "dart_library.json",
  "documentation.json",
  "fidl_library.json",
  "host_tool.json",
  "image.json",
  "loadable_module.json",
  "manifest.json",
  "sysroot.json",
]

sdk_documentation("meta") {
  name = "metadata_schemas"
  category = "partner"

  files = []
  foreach(schema, schemas) {
    files += [
      {
        source = "//build/sdk/meta/$schema"
        dest = "meta/schemas/$schema"
      },
    ]
  }
}

source_set("schemas") {
  sources = schemas
}

rustc_library("rust") {
  name = "sdk_metadata"

  with_unit_tests = true

  edition = "2018"

  deps = [
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_derive",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:valico",
  ]

  non_rust_deps = [ ":schemas" ]
}
