avito-android
70 строк · 2.4 Кб
1package com.avito.plugin
2
3import com.avito.android.signer.SignServicePlugin
4import com.avito.android.signer.signedApkDir
5import com.avito.android.withAndroidApp
6import org.gradle.api.Plugin
7import org.gradle.api.Project
8import org.gradle.kotlin.dsl.create
9import org.gradle.kotlin.dsl.register
10
11public class QAppsPlugin : Plugin<Project> {
12
13override fun apply(project: Project) {
14
15val extension = project.extensions.create<QAppsExtension>("qapps")
16
17project.withAndroidApp { appExtension ->
18appExtension.applicationVariants.all { variant ->
19
20project.tasks.register<QAppsUploadTask>(
21qappsUploadUnsignedTaskName(variant.name),
22) {
23description = "Upload unsigned ${variant.name} to qapps"
24configure(extension, variant)
25
26val packageTaskProvider = variant.packageApplicationProvider
27
28val apkProvider = packageTaskProvider.flatMap { it.outputDirectory }
29
30apkDirectory.set(apkProvider)
31
32// todo remove, somehow implicit dependency not working
33dependsOn(packageTaskProvider)
34}
35
36if (project.plugins.hasPlugin(SignServicePlugin::class.java)) {
37
38val signedApkDir = project.tasks.signedApkDir(variant.name)
39
40if (signedApkDir.isPresent) {
41project.tasks.register<QAppsUploadTask>(
42qappsUploadSignedTaskName(variant.name),
43) {
44description = "Upload signed ${variant.name} to qapps"
45configure(extension, variant)
46apkDirectory.set(signedApkDir)
47}
48}
49}
50}
51}
52}
53
54// todo use new AGP API
55private fun QAppsUploadTask.configure(
56extension: QAppsExtension,
57@Suppress("DEPRECATION") variant: com.android.build.gradle.api.ApplicationVariant
58) {
59group = "ci"
60
61variantName.set(variant.name)
62versionName.set(variant.versionName)
63versionCode.set(variant.versionCode.toString())
64packageName.set(variant.applicationId)
65host.set(extension.serviceUrl)
66comment.set(extension.comment)
67branch.set(extension.branchName)
68releaseBuildVariants.set(extension.releaseBuildVariants)
69}
70}
71