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

import("//build/config.gni")
import("//build/dist/resource.gni")

group("appmgr_policy_eng") {
  deps = [
    ":appmgr_build_info_allowlist_eng",
    ":appmgr_component_event_provider_allowlist_eng",
    ":appmgr_deprecated_ambient_replace_as_executable_allowlist_eng",
    ":appmgr_deprecated_misc_storage_allowlist_eng",
    ":appmgr_deprecated_shell_allowlist_eng",
    ":appmgr_durable_data_allowlist_eng",
    ":appmgr_factory_data_allowlist_eng",
    ":appmgr_hub_allowlist_eng",
    ":appmgr_mmio_resource_allowlist_eng",
    ":appmgr_package_cache_allowlist_eng",
    ":appmgr_package_resolver_allowlist_eng",
    ":appmgr_pkgfs_versions_allowlist_eng",
    ":appmgr_root_job_allowlist_eng",
    ":appmgr_root_resource_allowlist_eng",
    ":appmgr_system_updater_allowlist_eng",
    ":appmgr_vmex_resource_allowlist_eng",
    "//build/validate:non_production_tag",
  ]
}

config_data("appmgr_build_info_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "build_info_allowlist_eng.txt" ]
  outputs = [ "allowlist/build_info.txt" ]
}

config_data("appmgr_component_event_provider_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "component_event_provider_allowlist_eng.txt" ]
  outputs = [ "allowlist/component_event_provider.txt" ]
}

config_data("appmgr_deprecated_ambient_replace_as_executable_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "deprecated_ambient_replace_as_executable_allowlist_eng.txt" ]
  outputs = [ "allowlist/deprecated_ambient_replace_as_executable.txt" ]
}

config_data("appmgr_deprecated_misc_storage_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "deprecated_misc_storage_allowlist_eng.txt" ]
  outputs = [ "allowlist/deprecated_misc_storage.txt" ]
}

config_data("appmgr_deprecated_shell_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "deprecated_shell_allowlist_eng.txt" ]
  outputs = [ "allowlist/deprecated_shell.txt" ]
}

config_data("appmgr_durable_data_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "durable_data_allowlist_eng.txt" ]
  outputs = [ "allowlist/durable_data.txt" ]
}

config_data("appmgr_factory_data_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "factory_data_allowlist_eng.txt" ]
  outputs = [ "allowlist/factory_data.txt" ]
}

config_data("appmgr_hub_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "hub_allowlist_eng.txt" ]
  outputs = [ "allowlist/hub.txt" ]
}

config_data("appmgr_package_cache_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "package_cache_allowlist_eng.txt" ]
  outputs = [ "allowlist/package_cache.txt" ]
}

config_data("appmgr_package_resolver_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "package_resolver_allowlist_eng.txt" ]
  outputs = [ "allowlist/package_resolver.txt" ]
}

config_data("appmgr_pkgfs_versions_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "pkgfs_versions_allowlist_eng.txt" ]
  outputs = [ "allowlist/pkgfs_versions.txt" ]
}

config_data("appmgr_root_job_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "root_job_allowlist_eng.txt" ]
  outputs = [ "allowlist/root_job.txt" ]
}

config_data("appmgr_mmio_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "mmio_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/mmio_resource.txt" ]
}

config_data("appmgr_root_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "root_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/root_resource.txt" ]
}

config_data("appmgr_system_updater_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "system_updater_allowlist_eng.txt" ]
  outputs = [ "allowlist/system_updater.txt" ]
}

config_data("appmgr_vmex_resource_allowlist_eng") {
  for_pkg = "appmgr"
  sources = [ "vmex_resource_allowlist_eng.txt" ]
  outputs = [ "allowlist/vmex_resource.txt" ]
}
