mlanter c6f12527fb Add support for specifying custom env files in gradle (#52)
* Add support for specifying env files in gradle

* Update different environment selection for Android
2016-11-28 15:07:50 -08:00

56 lines
1.4 KiB
Groovy

import java.util.regex.Matcher
import java.util.regex.Pattern
def getCurrentFlavor() {
Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests()[0].args
Matcher matcher = Pattern.compile("([A-Z]\\w+)").matcher( tskReqStr )
if( matcher.find() ) {
return matcher.group(1).toLowerCase()
} else {
return "";
}
}
def readDotEnv = {
def envFile = ".env"
if (System.env['ENVFILE']) {
envFile = System.env['ENVFILE'];
} else if (project.hasProperty("envConfigFiles")) {
def possibleFile = project.envConfigFiles.get(getCurrentFlavor())
if (possibleFile) {
envFile = possibleFile;
}
}
def env = [:]
println("Reading env from: $envFile")
try {
new File("$project.rootDir/../$envFile").eachLine { line ->
def (key, val) = line.tokenize('=')
if (key && val && key.substring(0, 1) != "#") {
env.put(key, val)
}
}
} catch (Exception ex) {
println("**************************")
println("*** Missing .env file ****")
println("**************************")
}
project.ext.set("env", env)
}
readDotEnv()
android {
defaultConfig {
project.env.each { k, v ->
def escaped = v.replaceAll("%","\\\\u0025")
buildConfigField "String", k, "\"$v\""
resValue "string", k, "\"$escaped\""
}
}
}