From 3d3d4e3a241c7fe326a2943e2aa404212f17ecf2 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sat, 22 Dec 2018 17:17:32 +0100
Subject: [PATCH] Properly handle situations where no valid signing config is
 available

---
 app/build.gradle.kts                      | 11 +++++------
 buildSrc/src/main/kotlin/ProjectHelper.kt | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 279db4a63..24484e8e9 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -37,13 +37,12 @@ android {
   compileSdkVersion(28)
 
   signingConfigs {
-    val signing = project.rootProject.properties("signing.properties")
-    if (signing != null) {
+    SigningData.of(project.rootProject.properties("signing.properties"))?.let {
       create("default") {
-        storeFile = file(signing.getProperty("storeFile"))
-        storePassword = signing.getProperty("storePassword")
-        keyAlias = signing.getProperty("keyAlias")
-        keyPassword = signing.getProperty("keyPassword")
+        storeFile = file(it.storeFile)
+        storePassword = it.storePassword
+        keyAlias = it.keyAlias
+        keyPassword = it.keyPassword
       }
     }
   }
diff --git a/buildSrc/src/main/kotlin/ProjectHelper.kt b/buildSrc/src/main/kotlin/ProjectHelper.kt
index d7517e04e..1a9f2c318 100644
--- a/buildSrc/src/main/kotlin/ProjectHelper.kt
+++ b/buildSrc/src/main/kotlin/ProjectHelper.kt
@@ -41,3 +41,23 @@ fun Project.properties(fileName: String): Properties? {
   props.load(file.inputStream())
   return props
 }
+
+data class SigningData(
+  val storeFile: String,
+  val storePassword: String,
+  val keyAlias: String,
+  val keyPassword: String
+) {
+  companion object {
+    fun of(properties: Properties?): SigningData? {
+      if (properties == null) return null
+
+      val storeFile = properties.getProperty("storeFile") ?: return null
+      val storePassword = properties.getProperty("storePassword") ?: return null
+      val keyAlias = properties.getProperty("keyAlias") ?: return null
+      val keyPassword = properties.getProperty("keyPassword") ?: return null
+
+      return SigningData(storeFile, storePassword, keyAlias, keyPassword)
+    }
+  }
+}
-- 
GitLab