# 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") {
  inputs = 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" ]
}
