# Copyright 2021 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Template to merge multiple plist files and perform variable substitutions. # # Arguments # # plist_templates: # string array, paths to plist files which will be used for the bundle. # # format: # string, the format to `plutil -convert` the plist to when # generating the output. # # substitutions: # string array, 'key=value' pairs used to replace ${key} by value # when generating the output plist file. # # output_name: # string, name of the generated plist file. template("compile_plist") { assert(defined(invoker.plist_templates), "A list of template plist files must be specified for $target_name") assert(defined(invoker.format), "The plist format must be specified for $target_name") assert(defined(invoker.substitutions), "A list of key=value pairs must be specified for $target_name") assert(defined(invoker.output_name), "The name of the output file must be specified for $target_name") _output_name = invoker.output_name _merged_name = get_path_info(_output_name, "dir") + "/" + get_path_info(_output_name, "name") + "_merged." + get_path_info(_output_name, "extension") _merge_target = target_name + "_merge" action(_merge_target) { forward_variables_from(invoker, [ "deps", "testonly", ]) script = "//build/apple/plist_util.py" sources = invoker.plist_templates outputs = [ _merged_name ] args = [ "merge", "-f=" + invoker.format, "-o=" + rebase_path(_merged_name, root_build_dir), ] + rebase_path(invoker.plist_templates, root_build_dir) } action(target_name) { forward_variables_from(invoker, [ "testonly", "visibility", ]) script = "//build/apple/plist_util.py" sources = [ _merged_name ] outputs = [ _output_name ] args = [ "substitute", "-f=" + invoker.format, "-o=" + rebase_path(_output_name, root_build_dir), "-t=" + rebase_path(_merged_name, root_build_dir), ] foreach(_substitution, invoker.substitutions) { args += [ "-s=$_substitution" ] } deps = [ ":$_merge_target" ] } }