diffplug / diffplug/spotless

faster -PspotlessIdeHook with configure-on-demand

Offen
#1,101 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
559
Ø Merge
1 T. 13 Std.
Gemergte PRs (30 T.)
34

Beschreibung

Right now, the IDE hook works like this

```
spotlessApply -PspotlessIdeHook=${ABSOLUTE_PATH_TO_FILE}
```

But for large multiproject projects we could make it significantly faster with (note the leading colon)

```
:spotlessApply -PspotlessIdeHook=${ABSOLUTE_PATH_TO_FILE} --configure-on-demand
```

but only if we modified this code https://github.com/diffplug/spotless/blob/48723eb15b3e6b0ada0841bd78e4dd271af9507f/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessExtensionImpl.java#L54-L56

by adding something like:

```java
if (project == rootProject) {
String ideHookPath = (String) project.property(IdeHook.PROPERTY);
project.gradle.settingsEvaluated { settings ->
// the code below works only for root with children, needs to also handle children with children
ProjectDescriptor owningProject = null;
ProjectDescriptor rootDescriptor = settings.rootProject
for (ProjectDescriptor child : rootDescriptor.children) {
if (ideHookPath.startsWith(child.projectDir.absolutePath)) {
owningProject = child;
}
}
if (owningProject != null) {
project.evaluationDependsOn(owningProject.path)
}
}
}
```

In this way we can avoid evaluating all the `spotlessApply` tasks and instead only evaluate the root project and, if necessary, the project which contains the file in question.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.