# Copyright 2013 The Flutter 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("//flutter/testing/rules/runtime_mode.gni")

template("gradle_task") {
  action(target_name) {
    assert(defined(invoker.task), "task is a required parmaeter")
    assert(defined(invoker.outputs), "outputs is a required parameter")
    assert(defined(invoker.sources), "sources is a required parameter")
    assert(defined(invoker.gradlew_dir),
           "gradlew_dir is required (normally: rebase_path(\".\"")
    assert(defined(invoker.app_name), "app_name is a required parameter")

    script = "//flutter/testing/rules/run_gradle.py"

    inputs = [ "$root_out_dir/flutter.jar" ]
    sources = invoker.sources
    outputs = invoker.outputs
    out_dir = rebase_path("$root_out_dir/${invoker.app_name}")
    args = [
      invoker.gradlew_dir,
      invoker.task,
      "--no-daemon",
      "-Pflutter_jar=" + rebase_path("$root_out_dir/flutter.jar"),
      "-Pout_dir=$out_dir",
      "--project-cache-dir=$out_dir/.gradle",
      "--gradle-user-home=$out_dir/.gradle",
    ]

    if (is_aot) {
      args += [ "-Plibapp=" + rebase_path("$target_gen_dir/libs") ]
      inputs += [ "$target_gen_dir/libs/$android_app_abi/libapp.so" ]
    }

    deps = [ "//flutter/shell/platform/android:android_jar" ]

    if (defined(invoker.deps)) {
      deps += invoker.deps
    }
  }
}
