blob: 9e6ee3854245f303b139ef7c1c8e5b8e004c1656 [file] [log] [blame] [edit]
# Copyright 2018 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/compiled_action.gni")
# Merge one or more json files.
#
# If any input is not a valid JSON, the merge operation will fail. Consequently
# you can "merge" one JSON file to perform validation.
# If any two inputs overlap in key space, the merge operation will fail.
# Optionally the merged output can be minified. Consequently you can "merge"
# one JSON file to perform minification.
#
# Parameters
#
# sources (required)
# [files list] One or more JSON files to merge.
#
# minify (optional)
# [boolean] Whether to minify the result.
# Minified JSON is functionally equivalent but less readable to humans.
#
# testonly (optional)
# visibility (optional)
# Standard GN meaning.
#
# Example of usage:
#
# json_merge("merged.json") {
# sources = [ "one.json", "two.json" ]
# minify = true
# }
template("json_merge") {
compiled_action(target_name) {
forward_variables_from(invoker,
[
"deps",
"sources",
"testonly",
"visibility",
"minify",
])
tool = "//build/tools/json_merge"
merged_output = "$target_out_dir/$target_name"
outputs = [ merged_output ]
args = []
foreach(source, sources) {
args += [
"--input",
rebase_path(source, root_build_dir),
]
}
args += [
"--output",
rebase_path(merged_output, root_build_dir),
]
if (defined(minify) && minify) {
args += [ "--minify" ]
}
}
}