import("node.gni")

# TODO(MarshallOfSound): Move to electron/node, this is the only place it is used now
# Run an action with a given working directory. Behaves identically to the
# action() target type, with the exception that it changes directory before
# running the script.
#
# Parameters:
#   cwd [required]: Directory to change to before running the script.
template("chdir_action") {
  action(target_name) {
    forward_variables_from(invoker,
                           "*",
                           [
                             "script",
                             "args",
                           ])
    assert(defined(cwd), "Need cwd in $target_name")
    script = "//electron/build/run-in-dir.py"
    if (defined(sources)) {
      sources += [ invoker.script ]
    } else {
      assert(defined(inputs))
      inputs += [ invoker.script ]
    }
    args = [
      rebase_path(cwd),
      rebase_path(invoker.script),
    ]
    args += invoker.args
  }
}

template("asar") {
  assert(defined(invoker.sources),
         "Need sources in $target_name listing the source files")
  assert(defined(invoker.outputs),
         "Need asar name (as 1-element array, e.g. \$root_out_dir/foo.asar)")
  assert(defined(invoker.root), "Need the base dir for generating the ASAR")

  node_action(target_name) {
    forward_variables_from(invoker,
                           "*",
                           [
                             "script",
                             "args",
                           ])

    script = "//electron/script/gn-asar.js"
    args = [
             "--base",
             rebase_path(root),
             "--files",
           ] + rebase_path(sources) +
           [
             "--out",
             rebase_path(outputs[0]),
           ]
  }
}
