1
1
package ru.endlesscode.bukkitgradle.server
2
2
3
3
import org.gradle.api.InvalidUserDataException
4
+ import org.gradle.api.provider.Provider
5
+ import org.gradle.api.provider.ProviderFactory
4
6
import org.slf4j.LoggerFactory
5
7
import java.io.File
6
8
import java.util.*
7
9
8
- internal class ServerProperties (projectPath : File ) {
10
+ internal class ServerProperties (projectPath : File , private val providers : ProviderFactory ) {
9
11
10
12
val devServerDir: File
11
13
get() = getDir(DEV_SERVER_DIR )
@@ -42,7 +44,7 @@ internal class ServerProperties(projectPath: File) {
42
44
}
43
45
44
46
private fun setDefault (property : Property , defaultValue : String ) {
45
- if (System .getenv (property.envVariable) == null ) {
47
+ if (! getEnvProvider (property.envVariable).isPresent ) {
46
48
properties.setProperty(property.name, defaultValue)
47
49
}
48
50
}
@@ -55,19 +57,23 @@ internal class ServerProperties(projectPath: File) {
55
57
56
58
private fun get (property : Property ): String {
57
59
val localProp = properties.getProperty(property.name)
58
- val globalEnv = System .getenv(property.envVariable)
59
- if (localProp == null && globalEnv == null ) {
60
- logger.error(
61
- """
60
+ val globalEnv = getEnvProvider(property.envVariable).orNull
61
+ return localProp ? : globalEnv ? : showError(property)
62
+ }
63
+
64
+ private fun getEnvProvider (name : String ): Provider <String > {
65
+ return providers.environmentVariable(name).forUseAtConfigurationTime()
66
+ }
67
+
68
+ private fun showError (property : Property ): Nothing {
69
+ logger.error(
70
+ """
62
71
${property.description} not found. It can be fixed by two ways:
63
72
1.Define variable "${property.name} " in the $NAME file
64
73
2.Define ${property.envVariable} environment variable
65
74
""" .trimIndent()
66
- )
67
- throw InvalidUserDataException ()
68
- }
69
-
70
- return localProp ? : globalEnv
75
+ )
76
+ throw InvalidUserDataException ()
71
77
}
72
78
73
79
private data class Property (val name : String , val envVariable : String , val description : String )
0 commit comments