buildSrc/src/main/kotlin/AndroidPlayStorePublisher.kt
changeset 1 831cffa9c991
child 10 9aad34f43f71
equal deleted inserted replaced
0:fef46dce2812 1:831cffa9c991
       
     1 package com.geekorum.build
       
     2 
       
     3 import com.android.build.gradle.AppExtension
       
     4 import com.github.triplet.gradle.play.PlayPublisherExtension
       
     5 import org.gradle.api.NamedDomainObjectContainer
       
     6 import org.gradle.api.Project
       
     7 import org.gradle.api.plugins.ExtensionAware
       
     8 import org.gradle.kotlin.dsl.apply
       
     9 import org.gradle.kotlin.dsl.configure
       
    10 import org.gradle.kotlin.dsl.getByType
       
    11 import org.gradle.kotlin.dsl.the
       
    12 
       
    13 
       
    14 // Configuration for "com.github.triplet.play" plugin
       
    15 // This configuration expects the given properties
       
    16 // PLAY_STORE_JSON_KEY_FILE: google play console service credentials json file to use
       
    17 // PLAY_STORE_TRACK: track to publish the build, default to internal but can be set to alpha, beta or production
       
    18 // PLAY_STORE_FROM_TRACK: track from which to promote a build, default to internal but can be set to alpha, beta or production
       
    19 
       
    20 internal fun Project.configureAndroidPlayStorePublisher(): Unit {
       
    21     apply(plugin = "com.github.triplet.play")
       
    22     configure<PlayPublisherExtension> {
       
    23         defaultToAppBundles = true
       
    24         serviceAccountCredentials = file(properties["PLAY_STORE_JSON_KEY_FILE"]!!)
       
    25         track = properties.getOrDefault("PLAY_STORE_TRACK", "internal") as String
       
    26         fromTrack = properties.getOrDefault("PLAY_STORE_FROM_TRACK", "internal") as String
       
    27     }
       
    28 
       
    29     val android = the<AppExtension>() as ExtensionAware
       
    30 
       
    31     tasks.apply {
       
    32         register("publishToGooglePlayStore") {
       
    33             group = "Continuous Delivery"
       
    34             description = "Publish project to Google play store"
       
    35             dependsOn(named("publish"))
       
    36         }
       
    37 
       
    38         // only there for consistent naming scheme
       
    39         register("promoteOnGooglePlayStore") {
       
    40             group = "Continuous Delivery"
       
    41             description = "Promote project Google play store"
       
    42             dependsOn(named("promoteArtifact"))
       
    43         }
       
    44     }
       
    45 
       
    46 }