Skip to content

Commit 6b05f80

Browse files
committed
Use Project.ext as a fallback for property lookups
1 parent 2142bcb commit 6b05f80

1 file changed

Lines changed: 25 additions & 5 deletions

File tree

common/src/main/java/net/neoforged/gradle/common/extensions/base/WithPropertyLookup.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import org.gradle.api.GradleException;
44
import org.gradle.api.Project;
55
import org.gradle.api.file.Directory;
6+
import org.gradle.api.plugins.ExtraPropertiesExtension;
67
import org.gradle.api.provider.Provider;
78

89
import java.io.File;
910
import java.util.Arrays;
1011
import java.util.List;
12+
import java.util.Objects;
1113

1214
import static net.neoforged.gradle.dsl.common.util.Constants.SUBSYSTEM_PROPERTY_PREFIX;
1315

@@ -19,22 +21,22 @@ public WithPropertyLookup(Project project) {
1921
}
2022

2123
protected Provider<String> getStringProperty(String propertyName, String defaultValue) {
22-
final Provider<String> property = this.project.getProviders().gradleProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName);
24+
final Provider<String> property = this.getProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName);
2325
if (defaultValue == null)
2426
return property;
2527

2628
return property.orElse(defaultValue);
2729
}
2830

2931
protected Provider<Directory> getDirectoryProperty(String propertyName, Provider<Directory> defaultValue) {
30-
return this.project.getProviders().gradleProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName)
32+
return this.getProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName)
3133
.flatMap(path -> project.getLayout().dir(project.provider(() -> new File(path))))
3234
.orElse(defaultValue);
3335
}
3436

3537
protected Provider<Boolean> getBooleanProperty(String propertyName, boolean defaultValue, boolean disabledValue) {
3638
String fullPropertyName = SUBSYSTEM_PROPERTY_PREFIX + propertyName;
37-
return this.project.getProviders().gradleProperty(fullPropertyName)
39+
return this.getProperty(fullPropertyName)
3840
.map(value -> {
3941
try {
4042
return Boolean.valueOf(value);
@@ -46,7 +48,7 @@ protected Provider<Boolean> getBooleanProperty(String propertyName, boolean defa
4648

4749
protected Provider<Boolean> getBooleanProperty(String propertyName) {
4850
String fullPropertyName = SUBSYSTEM_PROPERTY_PREFIX + propertyName;
49-
return this.project.getProviders().gradleProperty(fullPropertyName)
51+
return this.getProperty(fullPropertyName)
5052
.map(value -> {
5153
try {
5254
return Boolean.valueOf(value);
@@ -57,11 +59,29 @@ protected Provider<Boolean> getBooleanProperty(String propertyName) {
5759
}
5860

5961
protected Provider<List<String>> getSpaceSeparatedListProperty(String propertyName, List<String> defaultValue) {
60-
return this.project.getProviders().gradleProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName)
62+
return this.getProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName)
6163
.map(s -> Arrays.asList(s.split("\\s+")))
6264
.orElse(defaultValue);
6365
}
6466

67+
private Provider<String> getProperty(String propertyName) {
68+
// Take a snapshot of the extra property at configuration as a fallback.
69+
// Extra properties are intended to be provided from other Gradle plugins that are
70+
// applied before this plugin to set default values programmatically.
71+
ExtraPropertiesExtension ext = this.project.getExtensions().getExtraProperties();
72+
String extValue;
73+
if (ext.has(propertyName)) {
74+
extValue = Objects.toString(ext.get(propertyName));
75+
} else {
76+
extValue = null;
77+
}
78+
79+
Provider<String> gradleProperty = this.project.getProviders().gradleProperty(propertyName);
80+
Provider<String> extProperty = this.project.getProviders().provider(() -> extValue);
81+
82+
return gradleProperty.orElse(extProperty);
83+
}
84+
6585
public Project getProject() {
6686
return project;
6787
}

0 commit comments

Comments
 (0)