From 984be52c62c14efe9372d6d714d080f2efa6d832 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Mon, 11 Nov 2024 17:53:20 +0300 Subject: [PATCH 1/2] Handle `settings.gradle.kts` or missing `settings.gradle.dcl` --- .../declarative/lsp/DeclarativeTextDocumentService.kt | 3 ++- .../lsp/build/action/GetDeclarativeResourcesModel.java | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt b/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt index 70a029b..bd3d976 100644 --- a/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt +++ b/lsp/src/main/kotlin/org/gradle/declarative/lsp/DeclarativeTextDocumentService.kt @@ -300,7 +300,8 @@ class DeclarativeTextDocumentService : TextDocumentService { val fileName = uri.path.substringAfterLast('/') val fileSchema = schemaAnalysisEvaluator.evaluate(fileName, text) val settingsSchema = schemaAnalysisEvaluator.evaluate( - declarativeResources.settingsFile.name, declarativeResources.settingsFile.readText() + declarativeResources.settingsFile.name, + declarativeResources.settingsFile.takeIf { it.canRead() }?.readText().orEmpty() ) val document = AnalysisDocumentUtils.documentWithModelDefaults(settingsSchema, fileSchema) diff --git a/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java b/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java index 9b6f965..2b0c3b7 100644 --- a/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java +++ b/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java @@ -28,6 +28,7 @@ import java.io.File; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; import java.util.stream.StreamSupport; public class GetDeclarativeResourcesModel implements BuildAction { @@ -103,7 +104,13 @@ public File getRootDir() { @Override public File getSettingsFile() { // TODO: this is an assumption about the location of the settings file – get it from Gradle instead. - return new File(getRootDir(), "settings.gradle.dcl"); + List candidateFiles = Stream.of("settings.gradle.dcl", "settings.gradle.kts") + .map(it -> new File(getRootDir(), "settings.gradle.dcl")) + .collect(Collectors.toList()); + return candidateFiles.stream() + .filter(File::exists) + .findFirst() + .orElse(candidateFiles.get(0)); } @Override From ba07ca20a3d8910782240892cd85e082b9a3d692 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Tue, 12 Nov 2024 14:17:37 +0300 Subject: [PATCH 2/2] Refactor the logic picking the settings file --- .../build/action/GetDeclarativeResourcesModel.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java b/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java index 2b0c3b7..f9dd0aa 100644 --- a/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java +++ b/tapi-model/src/main/java/org/gradle/declarative/lsp/build/action/GetDeclarativeResourcesModel.java @@ -26,9 +26,10 @@ import org.gradle.tooling.model.gradle.GradleBuild; import java.io.File; +import java.util.Arrays; import java.util.List; +import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; import java.util.stream.StreamSupport; public class GetDeclarativeResourcesModel implements BuildAction { @@ -104,13 +105,14 @@ public File getRootDir() { @Override public File getSettingsFile() { // TODO: this is an assumption about the location of the settings file – get it from Gradle instead. - List candidateFiles = Stream.of("settings.gradle.dcl", "settings.gradle.kts") - .map(it -> new File(getRootDir(), "settings.gradle.dcl")) - .collect(Collectors.toList()); - return candidateFiles.stream() + List candidateFileNames = Arrays.asList("settings.gradle.dcl", "settings.gradle.kts"); + Function asFileInRootDirectory = it -> new File(getRootDir(), it); + + return candidateFileNames.stream() + .map(asFileInRootDirectory) .filter(File::exists) .findFirst() - .orElse(candidateFiles.get(0)); + .orElse(asFileInRootDirectory.apply(candidateFileNames.get(0))); } @Override