# Copyright 2021 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/sdk/sdk_atom.gni")

# Exports the version history into the SDK.
#
# Parameters
#
#   category (required)
#     Publication level of the data set in SDKs.
#     See //build/sdk/sdk_atom.gni.
#
#   data (required)
#     The version history data file.

template("version_history") {
  assert(defined(invoker.category), "Must define an SDK category")
  assert(defined(invoker.data), "Must define the version history")

  version_history = invoker.data

  sdk_atom(target_name) {
    forward_variables_from(invoker, [ "category" ])

    id = "sdk://version_history"

    meta = {
      schema = "version_history-038fa854"
      type = "version_history"
      source = version_history
      dest = "version_history.json"
    }
  }
}
