chromium/ios/chrome/tools/strings/substitute_strings_identifier.gni

# 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.

import("//build/compiled_action.gni")

# Helper template to define an action that convert string identifiers to
# their numerical value in plist files.
#
# Arguments
#     source
#         string, path to the property list file that needs to be converted.
#
#     output
#         string, path to the generated property list file.
#
#     headers
#         list of strings corresponding to the path of all grit generated
#         headers that needs to be loaded to get the definition of the
#         string identifiers mapping.
#
#     deps
#         list of target labels.
#
template("substitute_strings_identifier") {
  assert(defined(invoker.source),
         "source needs to be defined for ${target_name}")
  assert(defined(invoker.output),
         "output needs to be defined for ${target_name}")
  assert(defined(invoker.headers),
         "headers needs to be defined for ${target_name}")

  compiled_action(target_name) {
    forward_variables_from(invoker,
                           [
                             "testonly",
                             "deps",
                             "public_deps",
                             "visibility",
                           ])

    tool = "//ios/chrome/tools/strings:substitute_strings_identifier"
    inputs = [ invoker.source ] + invoker.headers
    outputs = [ invoker.output ]

    args = [
      "-i",
      rebase_path(invoker.source, root_build_dir),
      "-o",
      rebase_path(invoker.output, root_build_dir),
    ]

    foreach(_header, invoker.headers) {
      args += [
        "-I",
        rebase_path(_header, root_build_dir),
      ]
    }
  }
}