yshrsmz / BuildKonfig

BuildConfig for Kotlin Multiplatform Project
Apache License 2.0
729 stars 33 forks source link

add an easy way to load flavor from arbitrary properties file #129

Open yshrsmz opened 8 months ago

yshrsmz commented 8 months ago
def configureBuildKonfigFlavorFromLocalProperties() {
    if (project.gradle.startParameter.projectProperties.containsKey("buildkonfig.flavor")) {
        // prefer cli parameter
        return
    }
    if (Files.exists(Paths.get("$project.rootDir/local.properties"))) {
        def key = "buildkonfig.flavor"
        // load buildkonfig.flavor if exists
        def localProperties = new Properties()
        localProperties.load(new FileInputStream("$project.rootDir/local.properties"))
        if (localProperties.containsKey(key)) {
            project.setProperty(key, localProperties.getProperty(key))
        }
    }
}

personally I wrote this script and use it in my project. But it would be nice if this is baked into BuildKonfig

jfrey-irhythm commented 8 months ago

It would be nice to have a way to set the buildkonfig.flavor property from the androidApp module in a typical KMP project. I've tried something like this but it doesn't work...

    flavorDimensions += "mode"
    productFlavors {
        create("dev") {
            isDefault = true
            dimension = "mode"
        }
        create("prod") {
            dimension = "mode"
            setProperty("buildkonfig.flavor", "prod")
        }
    }
yshrsmz commented 8 months ago

@jfrey-irhythm Take a look at https://github.com/yshrsmz/BuildKonfig/discussions/128