Skip to content

Commit

Permalink
Migrate other tasks away from Task.getProject()
Browse files Browse the repository at this point in the history
  • Loading branch information
TWiStErRob committed Aug 4, 2023
1 parent e835003 commit 7dc366e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,33 @@
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import org.gradle.api.DefaultTask;
import org.gradle.api.Task;
import org.gradle.api.internal.plugins.ExtensionContainerInternal;
import org.gradle.api.plugins.ExtensionAware;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.TaskAction;
import org.gradle.util.GradleVersion;

/** Task to print the appengine configuration closure. */
public class ShowConfigurationTask extends DefaultTask {

public ShowConfigurationTask() {
if (GradleVersion.current().getBaseVersion().compareTo(GradleVersion.version("7.4")) >= 0) {
String reason = "This task reads extensions dynamically based on a string, which requires usage of Project during @TaskAction. This cannot be made compatible without a breaking change in API unless setExtensionId is treated as internal API.";
try {
Task.class.getMethod("notCompatibleWithConfigurationCache").invoke(this, reason);
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
// Ignore. This is just a best-effort attempt to make the task work while CC is enabled.
}
}
}

private String extensionId;

@Input
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,23 @@
package com.google.cloud.tools.gradle.appengine.standard;

import java.io.File;

import javax.inject.Inject;

import org.gradle.api.internal.file.FileOperations;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.Sync;

/** Expand a war. */
public class ExplodeWarTask extends Sync {
public abstract class ExplodeWarTask extends Sync {

private File explodedAppDirectory;

@Inject
public abstract FileOperations getFileOperations();

public void setWarFile(File warFile) {
from(getProject().zipTree(warFile));
from(getFileOperations().zipTree(warFile));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,25 @@

package com.google.cloud.tools.gradle.appengine.standard;

import javax.inject.Inject;

import com.google.cloud.tools.appengine.AppEngineException;
import com.google.cloud.tools.appengine.operations.AppCfg;
import com.google.cloud.tools.gradle.appengine.core.CloudSdkOperations;
import org.gradle.api.DefaultTask;
import org.gradle.api.internal.file.FileOperations;
import org.gradle.api.tasks.Nested;
import org.gradle.api.tasks.TaskAction;

/** Stage App Engine Standard Environment applications for deployment. */
public class StageStandardTask extends DefaultTask {
public abstract class StageStandardTask extends DefaultTask {

private StageStandardExtension stageStandardExtension;
private AppCfg appCfg;

@Inject
public abstract FileOperations getFileOperations();

@Nested
public StageStandardExtension getStageStandardExtension() {
return stageStandardExtension;
Expand All @@ -46,7 +52,7 @@ public void setAppCfg(AppCfg appCfg) {
/** Task entrypoint : stage the standard app. */
@TaskAction
public void stageAction() throws AppEngineException {
getProject().delete(stageStandardExtension.getStagingDirectory());
getFileOperations().delete(stageStandardExtension.getStagingDirectory());
appCfg
.newStaging(CloudSdkOperations.getDefaultHandler(getLogger()))
.stageStandard(stageStandardExtension.toStageStandardConfiguration());
Expand Down

0 comments on commit 7dc366e

Please sign in to comment.