package org.netbeans.gradle.build;
import groovy.lang.Closure;
import java.util.Objects;
import org.gradle.api.Action;
import org.gradle.api.Task;
public final class TaskConfigurations {
public static Task lazilyConfiguredTask(final Task task, final Action<? super Task> taskConfiguration) {
Objects.requireNonNull(task, "task");
Objects.requireNonNull(taskConfiguration, "taskConfiguration");
String configTaskName = "configure" + capitalizeFirst(task.getName());
Task configTask = task.getProject().getTasks().findByName(configTaskName);
if (configTask == null) {
configTask = task.getProject().task(configTaskName);
task.dependsOn(configTask);
}
configTask.doLast(new Action<Task>() {
@Override
public void execute(Task t) {
taskConfiguration.execute(task);
}
});
return task;
}
public static Task lazilyConfiguredTask(Task task, final Closure<?> taskConfiguration) {
Objects.requireNonNull(taskConfiguration, "taskConfiguration");
return lazilyConfiguredTask(task, new Action<Task>() {
@Override
public void execute(Task configuredTask) {
taskConfiguration.setDelegate(configuredTask);
taskConfiguration.setResolveStrategy(Closure.DELEGATE_FIRST);
taskConfiguration.call(configuredTask);
}
});
}
public static String capitalizeFirst(String str) {
if (str.isEmpty()) {
return str;
}
char firstCh = str.charAt(0);
char newFirstCh = Character.toUpperCase(firstCh);
if (firstCh == newFirstCh) {
return str;
}
return newFirstCh + str.substring(1);
}
private TaskConfigurations() {
throw new AssertionError();
}
}