template("templated_file") {
  assert(defined(invoker.template), "Need template file to run")
  assert(defined(invoker.output), "Need output file to run")

  if (defined(invoker.values)) {
    args_path = "$target_gen_dir/$target_name.args"
    write_file(args_path, invoker.values, "json")
  }

  action(target_name) {
    forward_variables_from(invoker,
                           [
                             "deps",
                             "public_deps",
                             "inputs",
                             "outputs",
                           ])
    inputs = [ invoker.template ]
    outputs = [ invoker.output ]
    script = "//electron/build/generate-template.py"
    args = [
      rebase_path(invoker.template),
      rebase_path(invoker.output),
    ]

    if (defined(invoker.values)) {
      args += rebase_path(args_path)
    }

    if (defined(invoker.args_files)) {
      args += rebase_path(invoker.args_files)
      inputs += invoker.args_files
    }
  }
}