aboutsummaryrefslogtreecommitdiffstats
path: root/build-logic/android-plugins/src/main/kotlin/signing/AppSigning.kt
blob: 3618b6a5798fe005554ef2aa7d8c8123b0c15438 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
 * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
 * SPDX-License-Identifier: GPL-3.0-only
 */

package signing

import com.android.build.gradle.internal.dsl.BaseAppModuleExtension
import java.util.Properties
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.provideDelegate

private const val KEYSTORE_CONFIG_PATH = "keystore.properties"

/** Configure signing for all build types. */
@Suppress("UnstableApiUsage")
internal fun Project.configureBuildSigning() {
  val keystoreConfigFile = rootProject.layout.projectDirectory.file(KEYSTORE_CONFIG_PATH)
  if (keystoreConfigFile.asFile.exists()) {
    extensions.configure<BaseAppModuleExtension> {
      val contents = providers.fileContents(keystoreConfigFile).asText.forUseAtConfigurationTime()
      val keystoreProperties = Properties()
      keystoreProperties.load(contents.get().byteInputStream())
      signingConfigs {
        register("release") {
          keyAlias = keystoreProperties["keyAlias"] as String
          keyPassword = keystoreProperties["keyPassword"] as String
          storeFile = rootProject.file(keystoreProperties["storeFile"] as String)
          storePassword = keystoreProperties["storePassword"] as String
        }
      }
      val signingConfig = signingConfigs.getByName("release")
      buildTypes.all { setSigningConfig(signingConfig) }
    }
  }
}