Skip to content

Commit c3a6bbd

Browse files
committed
Inline settings.gradle write next to path determination
Move the Files.write call up into the same block that decides we need a temporary settings file, and collapse the two nested try/finally blocks into one outer finally that handles both init and settings cleanup. settingsWritten still gates the delete so a race-introduced or pre-existing user file is never touched.
1 parent 6d59af6 commit c3a6bbd

1 file changed

Lines changed: 19 additions & 24 deletions

File tree

rewrite-gradle-tooling-model/model/src/main/java/org/openrewrite/gradle/toolingapi/OpenRewriteModelBuilder.java

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -79,14 +79,11 @@ public static OpenRewriteModel forProjectDirectory(File projectDir, @Nullable Fi
7979
public static OpenRewriteModel forProjectDirectory(File projectDir, @Nullable File buildFile, @Nullable String initScript) throws IOException {
8080
DefaultGradleConnector connector = (DefaultGradleConnector) GradleConnector.newConnector();
8181
String gradleVersion;
82-
if (System.getProperty("org.openrewrite.test.gradleVersion") != null) {
83-
gradleVersion = System.getProperty("org.openrewrite.test.gradleVersion");
84-
connector.useGradleVersion(gradleVersion);
85-
} else if (Files.exists(projectDir.toPath().resolve("gradle/wrapper/gradle-wrapper.properties"))) {
82+
if (Files.exists(projectDir.toPath().resolve("gradle/wrapper/gradle-wrapper.properties"))) {
8683
gradleVersion = wrapperGradleVersion(projectDir.toPath().resolve("gradle/wrapper/gradle-wrapper.properties"));
8784
connector.useBuildDistribution();
8885
} else {
89-
gradleVersion = "8.14.4";
86+
gradleVersion = System.getProperty("org.openrewrite.test.gradleVersion", "8.14.4");
9087
connector.useGradleVersion(gradleVersion);
9188
}
9289
connector
@@ -99,6 +96,7 @@ public static OpenRewriteModel forProjectDirectory(File projectDir, @Nullable Fi
9996
Path init = projectDir.toPath().resolve("openrewrite-tooling.gradle").toAbsolutePath();
10097
arguments.add(init.toString());
10198
Path settings = null;
99+
boolean settingsWritten = false;
102100
if (buildFile != null && buildFile.exists()) {
103101
if (isGradle9OrLater(gradleVersion)) {
104102
// Gradle 9 dropped -b; for non-conventional build files write a temporary settings.gradle with rootProject.buildFileName.
@@ -110,21 +108,18 @@ public static OpenRewriteModel forProjectDirectory(File projectDir, @Nullable Fi
110108
if (!Files.exists(projectPath.resolve("settings.gradle")) &&
111109
!Files.exists(projectPath.resolve("settings.gradle.kts"))) {
112110
settings = projectPath.resolve("settings.gradle");
111+
Files.write(settings, ("rootProject.buildFileName = '" + buildFile.getName() + "'\n").getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW);
112+
settingsWritten = true;
113113
}
114114
}
115115
} else {
116116
arguments.add("-b");
117117
arguments.add(buildFile.getAbsolutePath());
118118
}
119119
}
120-
boolean settingsWritten = false;
121-
try (ProjectConnection connection = connector.connect()) {
122-
ModelBuilder<OpenRewriteModelProxy> customModelBuilder = connection.model(OpenRewriteModelProxy.class);
123-
try {
124-
if (settings != null) {
125-
Files.write(settings, ("rootProject.buildFileName = '" + buildFile.getName() + "'\n").getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE_NEW);
126-
settingsWritten = true;
127-
}
120+
try {
121+
try (ProjectConnection connection = connector.connect()) {
122+
ModelBuilder<OpenRewriteModelProxy> customModelBuilder = connection.model(OpenRewriteModelProxy.class);
128123
if (initScript == null) {
129124
if (System.getProperty("org.openrewrite.gradle.local.use-embedded-classpath") != null) {
130125
// code path only expected to be taken from within openrewrite/rewrite
@@ -144,18 +139,18 @@ public static OpenRewriteModel forProjectDirectory(File projectDir, @Nullable Fi
144139
}
145140
customModelBuilder.withArguments(arguments);
146141
return OpenRewriteModel.from(customModelBuilder.get());
147-
} finally {
148-
try {
149-
if (Files.exists(init)) {
150-
Files.delete(init);
151-
}
152-
if (settingsWritten) {
153-
Files.deleteIfExists(settings);
154-
}
155-
} catch (IOException e) {
156-
//noinspection ThrowFromFinallyBlock
157-
throw new UncheckedIOException(e);
142+
}
143+
} finally {
144+
try {
145+
if (Files.exists(init)) {
146+
Files.delete(init);
147+
}
148+
if (settingsWritten) {
149+
Files.deleteIfExists(settings);
158150
}
151+
} catch (IOException e) {
152+
//noinspection ThrowFromFinallyBlock
153+
throw new UncheckedIOException(e);
159154
}
160155
}
161156
}

0 commit comments

Comments
 (0)