# 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/dist/resource.gni")
import("//src/fonts/build/fonts.gni")

# Generate all the Fuchsia font `package`s from the values in the files listed
# in `font_pkgs_paths`.

all_packages = []

################################################################################
# Generate a `package` for every font
################################################################################
assert(font_pkg_entries != [])
foreach(entry, font_pkg_entries) {
  assert(font_pkg_entries != [])
  path_prefix = entry.path_prefix
  if (path_prefix != "") {
    path_prefix = "${path_prefix}/"
  }
  path_to_asset = "${fonts_dir}/${path_prefix}${entry.file_name}"

  resource_target = "${entry.safe_name}_resource"
  resource(resource_target) {
    sources = [ path_to_asset ]
    outputs = [ "data/${entry.file_name}" ]
  }

  package_name = "font-package-${entry.safe_name}"
  all_packages += [ ":${package_name}" ]
  fuchsia_package(package_name) {
    metadata = {
      font_barrier = []
      font_paths = [ path_to_asset ]
      font_file_names = [ entry.file_name ]
      fuchsia_package_urls = [ "fuchsia-pkg://fuchsia.com/${package_name}" ]
    }
    deps = [ ":$resource_target" ]
  }
}

# Group of all the single-font packages.
group("packages") {
  deps = all_packages
}
