├── version.txt ├── .github ├── CODEOWNERS ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── 3-doc.md │ ├── 2-feature.md │ └── 1-bug.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── stale.yml │ └── cid.yml ├── play ├── plugin │ ├── src │ │ ├── test │ │ │ ├── fixtures │ │ │ │ ├── app │ │ │ │ │ ├── creds.json │ │ │ │ │ └── gradle.properties │ │ │ │ ├── GenerateResourcesIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ ├── hiddenFile │ │ │ │ │ │ └── play │ │ │ │ │ │ │ ├── .keep │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ ├── .keep │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── title.txt │ │ │ │ │ │ ├── main │ │ │ │ │ │ ├── play │ │ │ │ │ │ │ ├── products │ │ │ │ │ │ │ │ └── sku.json │ │ │ │ │ │ │ ├── default-language.txt │ │ │ │ │ │ │ ├── listings │ │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ │ │ ├── title.txt │ │ │ │ │ │ │ │ │ ├── full-description.txt │ │ │ │ │ │ │ │ │ ├── short-description.txt │ │ │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ │ │ │ ├── phone-screenshots │ │ │ │ │ │ │ │ │ │ └── foo.jpg │ │ │ │ │ │ │ │ │ │ └── tablet-screenshots │ │ │ │ │ │ │ │ │ │ └── baz.jpg │ │ │ │ │ │ │ │ ├── fr-FR │ │ │ │ │ │ │ │ │ ├── title.txt │ │ │ │ │ │ │ │ │ ├── full-description.txt │ │ │ │ │ │ │ │ │ ├── short-description.txt │ │ │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ │ │ │ └── phone-screenshots │ │ │ │ │ │ │ │ │ │ └── bar.jpg │ │ │ │ │ │ │ │ └── de-DE │ │ │ │ │ │ │ │ │ └── full-description.txt │ │ │ │ │ │ │ ├── release-notes │ │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ │ │ └── fr-FR │ │ │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ │ └── subscriptions │ │ │ │ │ │ │ │ ├── subscription.json │ │ │ │ │ │ │ │ └── subscription.metadata.json │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ ├── illegalPlayFile │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── play │ │ │ │ │ │ ├── unknownFile │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── invalid │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── wrong.txt │ │ │ │ │ │ ├── free │ │ │ │ │ │ └── play │ │ │ │ │ │ │ ├── release-notes │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ │ └── de-DE │ │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ ├── de-DE │ │ │ │ │ │ │ ├── title.txt │ │ │ │ │ │ │ ├── short-description.txt │ │ │ │ │ │ │ └── full-description.txt │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── short-description.txt │ │ │ │ │ │ ├── prod │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── validPlayFile │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── play.txt │ │ │ │ │ │ ├── paid │ │ │ │ │ │ └── play │ │ │ │ │ │ │ ├── listings │ │ │ │ │ │ │ ├── de-DE │ │ │ │ │ │ │ │ ├── title.txt │ │ │ │ │ │ │ │ ├── short-description.txt │ │ │ │ │ │ │ │ └── full-description.txt │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ │ ├── title.txt │ │ │ │ │ │ │ │ ├── short-description.txt │ │ │ │ │ │ │ │ └── full-description.txt │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ ├── de-DE │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── invalidLocale │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── title.txt │ │ │ │ │ │ ├── play │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── staging │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ └── short-description.txt │ │ │ │ │ │ │ └── ja-JA │ │ │ │ │ │ │ └── parent-child-test.txt │ │ │ │ │ │ ├── topLevelGraphics │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ ├── phone-screenshots.png │ │ │ │ │ │ │ └── phone-screenshots │ │ │ │ │ │ │ └── b.jpeg │ │ │ │ │ │ ├── dogfood │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── freeStaging │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── illegalPlayDir │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── freeDogfood │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── freeStagingDogfood │ │ │ │ │ │ └── play │ │ │ │ │ │ │ ├── release-notes │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── full-description.txt │ │ │ │ │ │ ├── freeStagingRelease │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── full-description.txt │ │ │ │ │ │ └── topLevelGraphicsConflict │ │ │ │ │ │ └── play │ │ │ │ │ │ └── listings │ │ │ │ │ │ └── en-US │ │ │ │ │ │ └── graphics │ │ │ │ │ │ ├── phone-screenshots.png │ │ │ │ │ │ └── phone-screenshots │ │ │ │ │ │ └── phone-screenshots.png │ │ │ │ ├── PublishListingsIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ ├── hidden │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── .keep │ │ │ │ │ │ ├── invalid │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── foo.txt │ │ │ │ │ │ ├── details │ │ │ │ │ │ └── play │ │ │ │ │ │ │ ├── contact-email.txt │ │ │ │ │ │ │ ├── contact-phone.txt │ │ │ │ │ │ │ ├── default-language.txt │ │ │ │ │ │ │ └── contact-website.txt │ │ │ │ │ │ ├── everything │ │ │ │ │ │ └── play │ │ │ │ │ │ │ ├── default-language.txt │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ ├── graphics │ │ │ │ │ │ │ │ └── icon │ │ │ │ │ │ │ │ │ └── 1.png │ │ │ │ │ │ │ └── title.txt │ │ │ │ │ │ │ └── fr-FR │ │ │ │ │ │ │ ├── full-description.txt │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ └── phone-screenshots │ │ │ │ │ │ │ └── a.png │ │ │ │ │ │ ├── multiGraphics │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ ├── icon │ │ │ │ │ │ │ └── 1.png │ │ │ │ │ │ │ └── phone-screenshots │ │ │ │ │ │ │ ├── a.png │ │ │ │ │ │ │ ├── b.jpeg │ │ │ │ │ │ │ └── c.png │ │ │ │ │ │ ├── singleListing │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ ├── title.txt │ │ │ │ │ │ │ ├── video-url.txt │ │ │ │ │ │ │ ├── full-description.txt │ │ │ │ │ │ │ └── short-description.txt │ │ │ │ │ │ ├── mixedLevelGraphics │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ ├── phone-screenshots.png │ │ │ │ │ │ │ └── phone-screenshots │ │ │ │ │ │ │ └── b.jpeg │ │ │ │ │ │ ├── multiLangGraphics │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ │ └── icon │ │ │ │ │ │ │ │ └── 1.png │ │ │ │ │ │ │ └── fr-FR │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ └── phone-screenshots │ │ │ │ │ │ │ └── a.png │ │ │ │ │ │ ├── multiLangListing │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ ├── de-DE │ │ │ │ │ │ │ └── title.txt │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ └── title.txt │ │ │ │ │ │ │ └── fr-FR │ │ │ │ │ │ │ └── title.txt │ │ │ │ │ │ ├── singleGraphics │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── listings │ │ │ │ │ │ │ └── en-US │ │ │ │ │ │ │ └── graphics │ │ │ │ │ │ │ └── icon │ │ │ │ │ │ │ └── 1.png │ │ │ │ │ │ └── topLevelGraphics │ │ │ │ │ │ └── play │ │ │ │ │ │ └── listings │ │ │ │ │ │ └── en-US │ │ │ │ │ │ └── graphics │ │ │ │ │ │ └── icon.png │ │ │ │ ├── PublishProductsIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ ├── hidden │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── products │ │ │ │ │ │ │ └── .keep │ │ │ │ │ │ ├── invalid │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── products │ │ │ │ │ │ │ └── sku.txt │ │ │ │ │ │ ├── multipleProducts │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── products │ │ │ │ │ │ │ ├── 1.json │ │ │ │ │ │ │ └── 2.json │ │ │ │ │ │ └── simple │ │ │ │ │ │ └── play │ │ │ │ │ │ └── products │ │ │ │ │ │ └── product.json │ │ │ │ ├── PublishSubscriptionsIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ ├── hidden │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── products │ │ │ │ │ │ │ └── .keep │ │ │ │ │ │ ├── invalid │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── products │ │ │ │ │ │ │ └── sku.txt │ │ │ │ │ │ ├── simple │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── subscriptions │ │ │ │ │ │ │ ├── subscription.metadata.json │ │ │ │ │ │ │ └── subscription.json │ │ │ │ │ │ └── multipleSubscriptions │ │ │ │ │ │ └── play │ │ │ │ │ │ └── subscriptions │ │ │ │ │ │ ├── subscription1.metadata.json │ │ │ │ │ │ ├── subscription2.metadata.json │ │ │ │ │ │ ├── subscription1.json │ │ │ │ │ │ └── subscription2.json │ │ │ │ ├── PublishApkIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ ├── consoleNames │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-names │ │ │ │ │ │ │ ├── default.txt │ │ │ │ │ │ │ └── custom-track.txt │ │ │ │ │ │ ├── releaseNotes │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ ├── default.txt │ │ │ │ │ │ │ └── custom-track.txt │ │ │ │ │ │ │ └── fr-FR │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ └── main │ │ │ │ │ │ ├── java │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── publisher │ │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── cpp │ │ │ │ │ │ ├── native-lib.cpp │ │ │ │ │ │ └── CMakeLists.txt │ │ │ │ ├── PromoteReleaseIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ ├── consoleNames │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-names │ │ │ │ │ │ │ ├── default.txt │ │ │ │ │ │ │ ├── custom-track.txt │ │ │ │ │ │ │ └── promote-track.txt │ │ │ │ │ │ └── releaseNotes │ │ │ │ │ │ └── play │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ ├── default.txt │ │ │ │ │ │ ├── auto-track.txt │ │ │ │ │ │ └── custom-track.txt │ │ │ │ │ │ └── fr-FR │ │ │ │ │ │ └── default.txt │ │ │ │ ├── PublishBundleIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ ├── consoleNames │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-names │ │ │ │ │ │ │ ├── custom-track.txt │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ ├── releaseNotes │ │ │ │ │ │ └── play │ │ │ │ │ │ │ └── release-notes │ │ │ │ │ │ │ ├── en-US │ │ │ │ │ │ │ ├── default.txt │ │ │ │ │ │ │ └── custom-track.txt │ │ │ │ │ │ │ └── fr-FR │ │ │ │ │ │ │ └── default.txt │ │ │ │ │ │ └── main │ │ │ │ │ │ ├── java │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── publisher │ │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── CommitEditIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ └── main │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── GenerateEditIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ └── main │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── PlayPublisherPluginIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ └── main │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── ProcessArtifactVersionCodesIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ └── main │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── PublishInternalSharingApkIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ └── main │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── PublishInternalSharingBundleIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ │ └── main │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ └── InstallInternalSharingArtifactIntegrationTest │ │ │ │ │ └── src │ │ │ │ │ └── main │ │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── example │ │ │ │ │ │ └── publisher │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ └── AndroidManifest.xml │ │ │ └── kotlin │ │ │ │ └── com │ │ │ │ └── github │ │ │ │ └── triplet │ │ │ │ └── gradle │ │ │ │ └── play │ │ │ │ ├── helpers │ │ │ │ ├── SharedIntegrationTest.kt │ │ │ │ └── IntegrationTest.kt │ │ │ │ └── tasks │ │ │ │ ├── shared │ │ │ │ ├── PublishInternalSharingArtifactIntegrationTests.kt │ │ │ │ ├── LifecycleIntegrationTests.kt │ │ │ │ └── PublishOrPromoteArtifactIntegrationTests.kt │ │ │ │ ├── internal │ │ │ │ └── CliOptionsTest.kt │ │ │ │ ├── PublishInternalSharingApkIntegrationTest.kt │ │ │ │ ├── PublishInternalSharingBundleIntegrationTest.kt │ │ │ │ ├── CommitEditIntegrationTest.kt │ │ │ │ ├── InstallInternalSharingArtifactIntegrationTest.kt │ │ │ │ ├── GenerateEditIntegrationTest.kt │ │ │ │ ├── PublishProductsIntegrationTest.kt │ │ │ │ └── PublishSubscriptionsIntegrationTest.kt │ │ └── main │ │ │ └── kotlin │ │ │ └── com │ │ │ └── github │ │ │ └── triplet │ │ │ └── gradle │ │ │ └── play │ │ │ ├── internal │ │ │ ├── SubscriptionModels.kt │ │ │ ├── Validation.kt │ │ │ ├── Constants.kt │ │ │ ├── ListingModels.kt │ │ │ └── Plugins.kt │ │ │ └── tasks │ │ │ ├── internal │ │ │ ├── PlayTaskBase.kt │ │ │ ├── workers │ │ │ │ ├── EditWorkerBase.kt │ │ │ │ ├── PlayWorkerBase.kt │ │ │ │ ├── Params.kt │ │ │ │ └── PublishArtifactWorkerBase.kt │ │ │ ├── PublishTaskBase.kt │ │ │ ├── PublishArtifactTaskBase.kt │ │ │ └── LifecycleTasks.kt │ │ │ ├── CommitEdit.kt │ │ │ ├── PromoteRelease.kt │ │ │ ├── PublishProducts.kt │ │ │ ├── ProcessArtifactVersionCodes.kt │ │ │ ├── PublishInternalSharingApk.kt │ │ │ ├── PublishInternalSharingBundle.kt │ │ │ ├── PublishSubscriptions.kt │ │ │ └── PublishBundle.kt │ └── build.gradle.kts └── android-publisher │ ├── src │ ├── testFixtures │ │ ├── resources │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ ├── com.github.triplet.gradle.androidpublisher.EditManager$Factory │ │ │ │ └── com.github.triplet.gradle.androidpublisher.PlayPublisher$Factory │ │ └── kotlin │ │ │ └── com │ │ │ └── github │ │ │ └── triplet │ │ │ └── gradle │ │ │ └── androidpublisher │ │ │ ├── Responses.kt │ │ │ ├── FakePlayPublisher.kt │ │ │ └── FakeEditManager.kt │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ ├── com.github.triplet.gradle.androidpublisher.EditManager$Factory │ │ │ └── com.github.triplet.gradle.androidpublisher.PlayPublisher$Factory │ │ └── kotlin │ │ └── com │ │ └── github │ │ └── triplet │ │ └── gradle │ │ └── androidpublisher │ │ ├── PublisherModels.kt │ │ ├── internal │ │ ├── InternalPlayPublisher.kt │ │ └── AndroidPublisher.kt │ │ ├── EditManager.kt │ │ ├── Responses.kt │ │ └── PlayPublisher.kt │ └── build.gradle.kts ├── testapp ├── src │ └── main │ │ ├── play │ │ ├── default-language.txt │ │ ├── listings │ │ │ └── en-US │ │ │ │ ├── title.txt │ │ │ │ ├── short-description.txt │ │ │ │ ├── full-description.txt │ │ │ │ └── graphics │ │ │ │ ├── icon.png │ │ │ │ ├── feature-graphic.png │ │ │ │ ├── phone-screenshots │ │ │ │ ├── 1.jpg │ │ │ │ ├── 2.jpg │ │ │ │ ├── 3.jpg │ │ │ │ └── 4.jpg │ │ │ │ └── tablet-screenshots │ │ │ │ ├── 1.png │ │ │ │ └── 2.png │ │ ├── contact-website.txt │ │ ├── contact-email.txt │ │ └── release-notes │ │ │ └── en-US │ │ │ └── default.txt │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ └── layout │ │ │ └── activity_main.xml │ │ ├── java │ │ └── com │ │ │ └── supercilex │ │ │ └── test │ │ │ └── MainActivity.kt │ │ └── AndroidManifest.xml ├── settings.gradle.kts ├── keystore.jks ├── keystore.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradle.properties ├── google-play-auto-publisher.json ├── gradlew.bat └── build.gradle.kts ├── assets ├── min-perms.png ├── logo-license.html └── logo.svg ├── .gitignore ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── common ├── utils │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ └── com │ │ └── github │ │ └── triplet │ │ └── gradle │ │ └── common │ │ └── utils │ │ ├── Constants.kt │ │ └── Io.kt └── validation │ ├── src │ ├── main │ │ └── kotlin │ │ │ └── com │ │ │ └── github │ │ │ └── triplet │ │ │ └── gradle │ │ │ └── common │ │ │ └── validation │ │ │ ├── MinDeps.kt │ │ │ ├── RuntimeValidator.kt │ │ │ └── Validation.kt │ └── test │ │ └── kotlin │ │ └── com │ │ └── github │ │ └── triplet │ │ └── gradle │ │ └── common │ │ └── validation │ │ └── RuntimeValidatorTest.kt │ └── build.gradle.kts ├── CONTRIBUTING.md ├── LICENSE ├── gradlew.bat ├── settings.gradle.kts └── CODE_OF_CONDUCT.md /version.txt: -------------------------------------------------------------------------------- 1 | 3.13.0 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @SUPERCILEX 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: SUPERCILEX 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/app/creds.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/default-language.txt: -------------------------------------------------------------------------------- 1 | en-US 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Test app 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/contact-website.txt: -------------------------------------------------------------------------------- 1 | https://alexsaveau.dev 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/contact-email.txt: -------------------------------------------------------------------------------- 1 | saveau.alexandre@gmail.com 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | Foobar 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | Dummy release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/hiddenFile/play/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/hidden/play/listings/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishProductsIntegrationTest/src/hidden/play/products/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/hiddenFile/play/listings/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishProductsIntegrationTest/src/invalid/play/products/sku.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/hidden/play/products/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/products/sku.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/invalid/play/listings/en-US/foo.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/invalid/play/products/sku.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/app/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1g -Dfile.encoding=UTF-8 2 | -------------------------------------------------------------------------------- /testapp/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `gradle-enterprise` 3 | } 4 | 5 | includeBuild("..") 6 | -------------------------------------------------------------------------------- /assets/min-perms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/assets/min-perms.png -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/illegalPlayFile/play/listings/en-US/play: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/default-language.txt: -------------------------------------------------------------------------------- 1 | en-US 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/fr-FR/title.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/unknownFile/play/invalid/en-US/wrong.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/details/play/contact-email.txt: -------------------------------------------------------------------------------- 1 | email 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/details/play/contact-phone.txt: -------------------------------------------------------------------------------- 1 | phone 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/details/play/default-language.txt: -------------------------------------------------------------------------------- 1 | en-US 2 | -------------------------------------------------------------------------------- /testapp/keystore.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/keystore.jks -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/free/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | free -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/release-notes/fr-FR/default.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/prod/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | prod -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/validPlayFile/play/listings/en-US/play.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/everything/play/default-language.txt: -------------------------------------------------------------------------------- 1 | en-US 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/free/play/listings/de-DE/title.txt: -------------------------------------------------------------------------------- 1 | title free de -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/free/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | free -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/hiddenFile/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Hidden 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/de-DE/full-description.txt: -------------------------------------------------------------------------------- 1 | de-DE -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/en-US/full-description.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/fr-FR/full-description.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/fr-FR/short-description.txt: -------------------------------------------------------------------------------- 1 | main -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/subscriptions/subscription.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/listings/de-DE/title.txt: -------------------------------------------------------------------------------- 1 | title paid de -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | title paid us -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/everything/play/listings/en-US/graphics/icon/1.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/everything/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Title 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiGraphics/play/listings/en-US/graphics/icon/1.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/singleListing/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | title 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | *.iml 3 | .gradle 4 | build 5 | !**/src/main/**/build 6 | local.properties 7 | out 8 | userHome 9 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/free/play/release-notes/de-DE/default.txt: -------------------------------------------------------------------------------- 1 | free german -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/invalidLocale/play/listings/title.txt: -------------------------------------------------------------------------------- 1 | Invalid locale 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/release-notes/de-DE/default.txt: -------------------------------------------------------------------------------- 1 | paid german -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | paid english -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/play/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | play english -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/staging/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | staging -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/topLevelGraphics/play/listings/en-US/graphics/icon.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/consoleNames/play/release-names/default.txt: -------------------------------------------------------------------------------- 1 | myDefaultName 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/mixedLevelGraphics/play/listings/en-US/graphics/icon.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiLangGraphics/play/listings/en-US/graphics/icon/1.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiLangListing/play/listings/de-DE/title.txt: -------------------------------------------------------------------------------- 1 | Lang C 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiLangListing/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Lang A 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiLangListing/play/listings/fr-FR/title.txt: -------------------------------------------------------------------------------- 1 | Lang B 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/singleGraphics/play/listings/en-US/graphics/icon/1.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/singleListing/play/listings/en-US/video-url.txt: -------------------------------------------------------------------------------- 1 | url 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/topLevelGraphics/play/listings/en-US/graphics/icon.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2g -Dfile.encoding=UTF-8 2 | org.gradle.parallel=true 3 | org.gradle.caching=true 4 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/dogfood/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | dogfood english -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/freeStaging/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | freeStaging -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/en-US/graphics/phone-screenshots/foo.jpg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/en-US/graphics/tablet-screenshots/baz.jpg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/listings/fr-FR/graphics/phone-screenshots/bar.jpg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/staging/play/listings/ja-JA/parent-child-test.txt: -------------------------------------------------------------------------------- 1 | staging-pct -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PromoteReleaseIntegrationTest/src/consoleNames/play/release-names/default.txt: -------------------------------------------------------------------------------- 1 | myDefaultName 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/consoleNames/play/release-names/custom-track.txt: -------------------------------------------------------------------------------- 1 | myCustomName 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishBundleIntegrationTest/src/consoleNames/play/release-names/custom-track.txt: -------------------------------------------------------------------------------- 1 | myCustomName 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishBundleIntegrationTest/src/consoleNames/play/release-names/default.txt: -------------------------------------------------------------------------------- 1 | myDefaultName 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/details/play/contact-website.txt: -------------------------------------------------------------------------------- 1 | https://alexsaveau.dev 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/everything/play/listings/fr-FR/full-description.txt: -------------------------------------------------------------------------------- 1 | Full 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/everything/play/listings/fr-FR/graphics/phone-screenshots/a.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/singleListing/play/listings/en-US/full-description.txt: -------------------------------------------------------------------------------- 1 | full 2 | -------------------------------------------------------------------------------- /testapp/keystore.properties: -------------------------------------------------------------------------------- 1 | keyAlias=keystore 2 | keyPassword=000000 3 | storeFile=keystore.jks 4 | storePassword=000000 5 | -------------------------------------------------------------------------------- /testapp/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Playground 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/illegalPlayDir/play/listings/en-US/play/default.txt: -------------------------------------------------------------------------------- 1 | play english -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PromoteReleaseIntegrationTest/src/consoleNames/play/release-names/custom-track.txt: -------------------------------------------------------------------------------- 1 | myCustomName 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PromoteReleaseIntegrationTest/src/consoleNames/play/release-names/promote-track.txt: -------------------------------------------------------------------------------- 1 | myPromoteName 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiGraphics/play/listings/en-US/graphics/phone-screenshots/a.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiGraphics/play/listings/en-US/graphics/phone-screenshots/b.jpeg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiGraphics/play/listings/en-US/graphics/phone-screenshots/c.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/singleListing/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | short 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/freeDogfood/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | free dogfood english -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/topLevelGraphics/play/listings/en-US/graphics/phone-screenshots.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/topLevelGraphics/play/listings/en-US/graphics/phone-screenshots/b.jpeg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/releaseNotes/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | My default release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/releaseNotes/play/release-notes/fr-FR/default.txt: -------------------------------------------------------------------------------- 1 | Mes notes de mise à jour 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/mixedLevelGraphics/play/listings/en-US/graphics/phone-screenshots.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/mixedLevelGraphics/play/listings/en-US/graphics/phone-screenshots/b.jpeg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishListingsIntegrationTest/src/multiLangGraphics/play/listings/fr-FR/graphics/phone-screenshots/a.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishProductsIntegrationTest/src/multipleProducts/play/products/1.json: -------------------------------------------------------------------------------- 1 | { 2 | "sku": "sku1" 3 | } 4 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishProductsIntegrationTest/src/multipleProducts/play/products/2.json: -------------------------------------------------------------------------------- 1 | { 2 | "sku": "sku2" 3 | } 4 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishProductsIntegrationTest/src/simple/play/products/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "sku": "my-sku" 3 | } 4 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/free/play/listings/de-DE/short-description.txt: -------------------------------------------------------------------------------- 1 | shortdescription for free de -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/freeStagingDogfood/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | freeStagingDogfood -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/play/subscriptions/subscription.metadata.json: -------------------------------------------------------------------------------- 1 | {"regionsVersion":""} 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/listings/de-DE/short-description.txt: -------------------------------------------------------------------------------- 1 | shortdescription for paid de -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | shortdescription for paid us -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PromoteReleaseIntegrationTest/src/releaseNotes/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | My default release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PromoteReleaseIntegrationTest/src/releaseNotes/play/release-notes/fr-FR/default.txt: -------------------------------------------------------------------------------- 1 | Mes notes de mise à jour 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishBundleIntegrationTest/src/releaseNotes/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | My default release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishBundleIntegrationTest/src/releaseNotes/play/release-notes/fr-FR/default.txt: -------------------------------------------------------------------------------- 1 | Mes notes de mise à jour 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/full-description.txt: -------------------------------------------------------------------------------- 1 | Access to this app can be found here: https://github.com/SUPERCILEX/issue-mcve 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/CommitEditIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateEditIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/free/play/listings/de-DE/full-description.txt: -------------------------------------------------------------------------------- 1 | fulldescription for free de flavor -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/freeStagingDogfood/play/listings/en-US/full-description.txt: -------------------------------------------------------------------------------- 1 | freeStagingDogfood -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/freeStagingRelease/play/listings/en-US/full-description.txt: -------------------------------------------------------------------------------- 1 | freeStagingRelease -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/listings/de-DE/full-description.txt: -------------------------------------------------------------------------------- 1 | fulldescription for paid de flavor -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/paid/play/listings/en-US/full-description.txt: -------------------------------------------------------------------------------- 1 | fulldescription for paid us flavor -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/topLevelGraphicsConflict/play/listings/en-US/graphics/phone-screenshots.png: -------------------------------------------------------------------------------- 1 | top -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PromoteReleaseIntegrationTest/src/releaseNotes/play/release-notes/en-US/auto-track.txt: -------------------------------------------------------------------------------- 1 | Auto track release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/releaseNotes/play/release-notes/en-US/custom-track.txt: -------------------------------------------------------------------------------- 1 | Custom track release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishBundleIntegrationTest/src/releaseNotes/play/release-notes/en-US/custom-track.txt: -------------------------------------------------------------------------------- 1 | Custom track release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/simple/play/subscriptions/subscription.metadata.json: -------------------------------------------------------------------------------- 1 | {"regionsVersion":""} 2 | -------------------------------------------------------------------------------- /testapp/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PlayPublisherPluginIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PromoteReleaseIntegrationTest/src/releaseNotes/play/release-notes/en-US/custom-track.txt: -------------------------------------------------------------------------------- 1 | Custom track release notes 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/ProcessArtifactVersionCodesIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishInternalSharingApkIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishInternalSharingBundleIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /testapp/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2g -Dfile.encoding=UTF-8 2 | org.gradle.parallel=true 3 | org.gradle.caching=true 4 | android.useAndroidX=true 5 | -------------------------------------------------------------------------------- /testapp/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /testapp/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/GenerateResourcesIntegrationTest/src/topLevelGraphicsConflict/play/listings/en-US/graphics/phone-screenshots/phone-screenshots.png: -------------------------------------------------------------------------------- 1 | filed -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/multipleSubscriptions/play/subscriptions/subscription1.metadata.json: -------------------------------------------------------------------------------- 1 | {"regionsVersion":""} 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/multipleSubscriptions/play/subscriptions/subscription2.metadata.json: -------------------------------------------------------------------------------- 1 | {"regionsVersion":""} 2 | -------------------------------------------------------------------------------- /testapp/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /testapp/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /testapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/icon.png -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/simple/play/subscriptions/subscription.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageName": "my-package", 3 | "productId": "subscription" 4 | } 5 | -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/feature-graphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/feature-graphic.png -------------------------------------------------------------------------------- /play/android-publisher/src/testFixtures/resources/META-INF/services/com.github.triplet.gradle.androidpublisher.EditManager$Factory: -------------------------------------------------------------------------------- 1 | com.github.triplet.gradle.androidpublisher.FakeEditManager$Factory 2 | -------------------------------------------------------------------------------- /play/android-publisher/src/main/resources/META-INF/services/com.github.triplet.gradle.androidpublisher.EditManager$Factory: -------------------------------------------------------------------------------- 1 | com.github.triplet.gradle.androidpublisher.internal.DefaultEditManager$Factory 2 | -------------------------------------------------------------------------------- /play/android-publisher/src/testFixtures/resources/META-INF/services/com.github.triplet.gradle.androidpublisher.PlayPublisher$Factory: -------------------------------------------------------------------------------- 1 | com.github.triplet.gradle.androidpublisher.FakePlayPublisher$Factory 2 | -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/phone-screenshots/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/phone-screenshots/1.jpg -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/phone-screenshots/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/phone-screenshots/2.jpg -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/phone-screenshots/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/phone-screenshots/3.jpg -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/phone-screenshots/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/phone-screenshots/4.jpg -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/tablet-screenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/tablet-screenshots/1.png -------------------------------------------------------------------------------- /testapp/src/main/play/listings/en-US/graphics/tablet-screenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Triple-T/gradle-play-publisher/HEAD/testapp/src/main/play/listings/en-US/graphics/tablet-screenshots/2.png -------------------------------------------------------------------------------- /play/android-publisher/src/main/resources/META-INF/services/com.github.triplet.gradle.androidpublisher.PlayPublisher$Factory: -------------------------------------------------------------------------------- 1 | com.github.triplet.gradle.androidpublisher.internal.DefaultPlayPublisher$Factory 2 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/multipleSubscriptions/play/subscriptions/subscription1.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageName": "my-package", 3 | "productId": "subscription1" 4 | } 5 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishSubscriptionsIntegrationTest/src/multipleSubscriptions/play/subscriptions/subscription2.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageName": "my-package", 3 | "productId": "subscription2" 4 | } 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/3-doc.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 📚 Documentation request 3 | about: Point out what's confusing or missing 4 | labels: docs 5 | 6 | --- 7 | 8 | What are you having trouble with and how can we help you? 9 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/main/java/com/example/publisher/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.publisher; 2 | 3 | import android.app.Activity; 4 | 5 | public final class MainActivity extends Activity {} 6 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishBundleIntegrationTest/src/main/java/com/example/publisher/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.publisher; 2 | 3 | import android.app.Activity; 4 | 5 | public final class MainActivity extends Activity {} 6 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/InstallInternalSharingArtifactIntegrationTest/src/main/java/com/example/publisher/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.publisher; 2 | 3 | import android.app.Activity; 4 | 5 | public final class MainActivity extends Activity {} 6 | -------------------------------------------------------------------------------- /testapp/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/internal/SubscriptionModels.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.internal 2 | 3 | data class SubscriptionMetadata( 4 | /** The subscription regions version */ 5 | val regionsVersion: String, 6 | ) 7 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/2-feature.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🙏 Feature request 3 | about: Suggest an idea for this project 4 | labels: enhancement 5 | 6 | --- 7 | 8 | ### Problem description 9 | 10 | 11 | 12 | ### Potential solutions/workarounds 13 | 14 | 15 | 16 | ### Additional context 17 | 18 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /testapp/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /common/utils/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `kotlin-dsl` 3 | `maven-publish` 4 | signing 5 | } 6 | 7 | afterEvaluate { 8 | publishing.publications.named("pluginMaven") { 9 | artifactId = "common-utils" 10 | configurePom() 11 | signing.sign(this) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/utils/src/main/kotlin/com/github/triplet/gradle/common/utils/Constants.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.common.utils 2 | 3 | /** The plugin's non user-facing name. */ 4 | const val PLUGIN_NAME: String = "gradle-play-publisher" 5 | 6 | /** The plugin's Gradle task group. */ 7 | const val PLUGIN_GROUP: String = "Publishing" 8 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishBundleIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /common/validation/src/main/kotlin/com/github/triplet/gradle/common/validation/MinDeps.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.common.validation 2 | 3 | import com.android.build.api.AndroidPluginVersion 4 | import org.gradle.util.GradleVersion 5 | 6 | internal val MIN_GRADLE_VERSION = GradleVersion.version("7.0.2") 7 | internal val MIN_AGP_VERSION = AndroidPluginVersion(7, 0) 8 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/InstallInternalSharingArtifactIntegrationTest/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /testapp/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /play/plugin/src/test/fixtures/PublishApkIntegrationTest/src/main/cpp/native-lib.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" 5 | JNIEXPORT jstring JNICALL 6 | Java_com_example_publisher_MainActivity_stringFromJNI( 7 | JNIEnv *env, 8 | jobject /* this */) { 9 | std::string hello = "Hello from C++"; 10 | return env->NewStringUTF(hello.c_str()); 11 | } 12 | -------------------------------------------------------------------------------- /testapp/src/main/java/com/supercilex/test/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.supercilex.test 2 | 3 | import android.os.Bundle 4 | import androidx.appcompat.app.AppCompatActivity 5 | 6 | class MainActivity : AppCompatActivity() { 7 | override fun onCreate(savedInstanceState: Bundle?) { 8 | super.onCreate(savedInstanceState) 9 | setContentView(R.layout.activity_main) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Hey there! So you want to contribute to Gradle Play Publisher? 2 | Before you file this pull request, follow these steps: 3 | 4 | - Read [the contribution guidelines](https://github.com/Triple-T/gradle-play-publisher/blob/master/CONTRIBUTING.md). 5 | - If this has been discussed in an issue, make sure to mention the issue number here. 6 | If not, go file an issue about this to make sure it is a desirable change. 7 | -------------------------------------------------------------------------------- /assets/logo-license.html: -------------------------------------------------------------------------------- 1 | 2 | Creative Commons License 5 | 6 |
7 | This work is licensed under a 8 | 9 | Creative Commons Attribution 4.0 International License 10 | . 11 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/tasks/internal/PlayTaskBase.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.tasks.internal 2 | 3 | import com.github.triplet.gradle.play.PlayPublisherExtension 4 | import org.gradle.api.DefaultTask 5 | import org.gradle.api.tasks.Nested 6 | import org.gradle.work.DisableCachingByDefault 7 | 8 | @DisableCachingByDefault 9 | internal abstract class PlayTaskBase( 10 | @get:Nested val extension: PlayPublisherExtension, 11 | ) : DefaultTask() 12 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/internal/Validation.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.internal 2 | 3 | import com.android.build.api.variant.ApplicationVariant 4 | import com.github.triplet.gradle.common.validation.validateDebuggability 5 | import com.github.triplet.gradle.play.PlayPublisherPlugin 6 | import org.gradle.api.logging.Logging 7 | 8 | internal fun ApplicationVariant.validateDebuggability() = 9 | validateDebuggability(this, Logging.getLogger(PlayPublisherPlugin::class.java)) 10 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/tasks/internal/workers/EditWorkerBase.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.tasks.internal.workers 2 | 3 | internal abstract class EditWorkerBase : 4 | PlayWorkerBase() { 5 | protected fun commit() { 6 | if (config.commit) { 7 | apiService.scheduleCommit() 8 | } else { 9 | apiService.skipCommit() 10 | } 11 | } 12 | 13 | internal interface EditPublishingParams : PlayPublishingParams 14 | } 15 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/tasks/internal/PublishTaskBase.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.tasks.internal 2 | 3 | import com.github.triplet.gradle.play.PlayPublisherExtension 4 | import org.gradle.api.provider.Property 5 | import org.gradle.api.tasks.Internal 6 | import org.gradle.work.DisableCachingByDefault 7 | 8 | @DisableCachingByDefault 9 | internal abstract class PublishTaskBase( 10 | extension: PlayPublisherExtension, 11 | ) : PlayTaskBase(extension) { 12 | @get:Internal 13 | abstract val apiService: Property 14 | } 15 | -------------------------------------------------------------------------------- /common/validation/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `kotlin-dsl` 3 | `maven-publish` 4 | signing 5 | } 6 | 7 | dependencies { 8 | compileOnly(libs.agp) 9 | compileOnly(libs.agp.common) 10 | 11 | testImplementation(testLibs.junit) 12 | testImplementation(testLibs.junit.engine) 13 | testImplementation(testLibs.truth) 14 | testImplementation(libs.agp) 15 | } 16 | 17 | afterEvaluate { 18 | publishing.publications.named("pluginMaven") { 19 | artifactId = "common-validation" 20 | configurePom() 21 | signing.sign(this) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /play/plugin/src/test/kotlin/com/github/triplet/gradle/play/helpers/SharedIntegrationTest.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.helpers 2 | 3 | import com.google.common.truth.Truth.assertThat 4 | import org.gradle.testkit.runner.BuildResult 5 | import org.gradle.testkit.runner.TaskOutcome 6 | 7 | interface SharedIntegrationTest : IntegrationTest { 8 | fun taskName(taskVariant: String = DEFAULT_TASK_VARIANT): String 9 | 10 | fun BuildResult.requireTask(task: String = taskName(), outcome: TaskOutcome) { 11 | assertThat(task(task)).isNotNull() 12 | assertThat(task(task)!!.outcome).isEqualTo(outcome) 13 | } 14 | 15 | companion object { 16 | const val DEFAULT_TASK_VARIANT = "Release" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/internal/Constants.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.internal 2 | 3 | internal const val PLAY_PATH = "play" 4 | internal const val PLAY_CONFIGS_PATH = "playConfigs" 5 | internal const val LISTINGS_PATH = "listings" 6 | internal const val GRAPHICS_PATH = "graphics" 7 | internal const val RELEASE_NOTES_PATH = "release-notes" 8 | internal const val RELEASE_NAMES_PATH = "release-names" 9 | internal const val PRODUCTS_PATH = "products" 10 | internal const val SUBSCRIPTIONS_PATH = "subscriptions" 11 | internal const val OUTPUT_PATH = "gpp" 12 | internal const val RESOURCES_OUTPUT_PATH = "generated/$OUTPUT_PATH" 13 | internal const val INTERMEDIATES_OUTPUT_PATH = "intermediates/$OUTPUT_PATH" 14 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/tasks/internal/workers/PlayWorkerBase.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.tasks.internal.workers 2 | 3 | import com.github.triplet.gradle.play.internal.PlayExtensionConfig 4 | import com.github.triplet.gradle.play.tasks.internal.PlayApiService 5 | import org.gradle.api.provider.Property 6 | import org.gradle.workers.WorkAction 7 | import org.gradle.workers.WorkParameters 8 | 9 | internal abstract class PlayWorkerBase : WorkAction { 10 | protected val config = parameters.config.get() 11 | protected val apiService = parameters.apiService.get() 12 | 13 | internal interface PlayPublishingParams : WorkParameters { 14 | val config: Property 15 | val apiService: Property 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /play/plugin/src/main/kotlin/com/github/triplet/gradle/play/tasks/internal/PublishArtifactTaskBase.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.tasks.internal 2 | 3 | import com.github.triplet.gradle.play.PlayPublisherExtension 4 | import org.gradle.api.file.DirectoryProperty 5 | import org.gradle.api.tasks.InputDirectory 6 | import org.gradle.api.tasks.PathSensitive 7 | import org.gradle.api.tasks.PathSensitivity 8 | import org.gradle.work.DisableCachingByDefault 9 | 10 | @DisableCachingByDefault 11 | internal abstract class PublishArtifactTaskBase( 12 | extension: PlayPublisherExtension, 13 | ) : PublishTaskBase(extension) { 14 | @get:PathSensitive(PathSensitivity.RELATIVE) 15 | @get:InputDirectory 16 | internal abstract val releaseNotesDir: DirectoryProperty 17 | 18 | @get:PathSensitive(PathSensitivity.RELATIVE) 19 | @get:InputDirectory 20 | internal abstract val consoleNamesDir: DirectoryProperty 21 | } 22 | -------------------------------------------------------------------------------- /play/plugin/src/test/kotlin/com/github/triplet/gradle/play/helpers/IntegrationTest.kt: -------------------------------------------------------------------------------- 1 | package com.github.triplet.gradle.play.helpers 2 | 3 | import org.gradle.testkit.runner.BuildResult 4 | import org.gradle.testkit.runner.GradleRunner 5 | import java.io.File 6 | 7 | interface IntegrationTest { 8 | val appDir: File 9 | val playgroundDir: File 10 | 11 | val factoryInstallerStatement: String 12 | 13 | val withConfigurationCache: Boolean 14 | 15 | fun File.escaped(): String 16 | 17 | fun execute(config: String, vararg tasks: String): BuildResult 18 | 19 | fun executeExpectingFailure(config: String, vararg tasks: String): BuildResult 20 | 21 | fun executeGradle( 22 | expectFailure: Boolean, 23 | block: GradleRunner.() -> Unit, 24 | ): BuildResult 25 | 26 | fun String.withAndroidBlock() = """ 27 | android { 28 | $this 29 | } 30 | """.trimIndent() 31 | } 32 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: 'Close stale issues and PRs' 2 | on: 3 | schedule: 4 | - cron: '0 0 * * *' 5 | 6 | jobs: 7 | stale: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/stale@v9 11 | with: 12 | days-before-stale: 7 13 | stale-issue-label: waiting-for-reply 14 | stale-pr-label: waiting-for-reply 15 | exempt-issue-labels: feature:apk,feature:bundle,feature:listing,feature:other,dontclose 16 | exempt-pr-labels: dontclose 17 | stale-issue-message: | 18 | This issue has been automatically marked as stale because it has not had recent 19 | activity. It will be closed if no further activity occurs. Thank you for your 20 | contributions. 21 | stale-pr-message: | 22 | This PR has been automatically marked as stale because it has not had recent activity. 23 | It will be closed if no further activity occurs. Thank you for your contributions. 24 | -------------------------------------------------------------------------------- /testapp/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 |