# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import("//build/compiled_action.gni")

# Tempalte to generate a Rollup bundle of code.
template("bundle") {
  action(target_name) {
    forward_variables_from(invoker, "*")
    script = "//tools/run_node.py"
    outputs = [
      out_dir + out_name + ".js",
      out_dir + out_name + ".js.map",
    ]
    inputs = [
      "//js/" + out_name + ".ts",
      "//rollup.config.js",
    ]
    depfile = out_dir + out_name + ".d"
    args = [
      rebase_path("//third_party/node_modules/rollup/bin/rollup", root_build_dir),
      "-c",
      rebase_path("//rollup.config.js", root_build_dir),
      "-i",
      rebase_path(inputs[0], root_build_dir),
      "-o",
      rebase_path(outputs[0], root_build_dir),
      "--sourcemapFile",
      rebase_path("."),
      "--silent",
    ]
  }
}

template("run_node") {
  action(target_name) {
    forward_variables_from(invoker, "*")
    script = "//tools/run_node.py"
  }
}

# Template to generate different V8 snapshots based on different runtime flags.
template("snapshot") {
  compiled_action(target_name) {
    forward_variables_from(invoker,
                           [
                             "testonly",
                             "deps",
                           ])
    # TODO(ry) Rewrite snapshot_creator in Rust.
    tool = "//core/libdeno:snapshot_creator"
    visibility = [ ":*" ]  # Only targets in this file can depend on this.
    snapshot_out_bin = "$target_gen_dir/$target_name.bin"
    inputs = [
      invoker.source_root,
    ]

    outputs = [
      snapshot_out_bin,
    ]
    args = rebase_path(outputs, root_build_dir) +
           rebase_path(inputs, root_build_dir)

    # To debug snapshotting problems:
    #  args += ["--trace-serializer"]
  }
}