import("../npm.gni")

template("webpack_build") {
  assert(defined(invoker.config_file), "Need webpack config file to run")
  assert(defined(invoker.out_file), "Need output file to run")
  assert(defined(invoker.inputs), "Need webpack inputs to run")

  npm_action(target_name) {
    forward_variables_from(invoker,
                           [
                             "deps",
                             "public_deps",
                           ])
    script = "webpack"

    inputs = [
               invoker.config_file,
               "//electron/build/webpack/webpack.config.base.js",
               "//electron/tsconfig.json",
               "//electron/yarn.lock",
               "//electron/typings/internal-ambient.d.ts",
               "//electron/typings/internal-electron.d.ts",
             ] + invoker.inputs

    mode = "development"
    if (is_official_build) {
      mode = "production"
    }

    args = [
      "--config",
      rebase_path(invoker.config_file),
      "--output-filename",
      get_path_info(invoker.out_file, "file"),
      "--output-path",
      rebase_path(get_path_info(invoker.out_file, "dir")),
      "--env",
      "buildflags=" + rebase_path("$target_gen_dir/buildflags/buildflags.h"),
      "--env",
      "mode=" + mode,
    ]
    deps += [ "//electron/buildflags" ]

    outputs = [ invoker.out_file ]
  }
}
