# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(is_fuchsia)

# Generates a metadata file under root_gen_dir which provides information about
# a Fuchsia package.
# Parameters:
#   package_deps: An array of package_paths which specify the location of all
#                 .far files that the package depends on.
template("fuchsia_package_metadata") {
  _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") +
             "/" + target_name
  _pkg_path = "$_pkg_dir/${target_name}.far"
  pkg_dep_paths = [ rebase_path(_pkg_path, root_build_dir) ]
  if (defined(invoker.package_deps)) {
    foreach(package_dep, invoker.package_deps) {
      _pkg_dep_target = package_dep[0]
      _pkg_dep_name = package_dep[1]
      pkg_dep_path =
          rebase_path(get_label_info(_pkg_dep_target, "target_gen_dir") + "/" +
                          _pkg_dep_name + "/" + _pkg_dep_name + ".far",
                      root_build_dir)
      pkg_dep_paths += [ pkg_dep_path ]
    }
  }

  _metadata_target = "${target_name}_script_meta_gen"
  _metadata_file = "$root_gen_dir/package_metadata/${invoker.target_name}.meta"
  generated_file(_metadata_target) {
    forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
    contents = {
      packages = pkg_dep_paths
    }
    output_conversion = "json"
    outputs = [ _metadata_file ]
  }

  group("${target_name}_script_meta") {
    forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
    data = [ _metadata_file ]
    deps = [ ":$_metadata_target" ]
  }
}
