avito-android

Форк
0
85 строк · 2.6 Кб
1
package com.avito.plugin
2

3
import Slf4jGradleLoggerFactory
4
import com.avito.android.getApkOrThrow
5
import com.avito.utils.buildFailer
6
import okhttp3.OkHttpClient
7
import org.gradle.api.DefaultTask
8
import org.gradle.api.file.DirectoryProperty
9
import org.gradle.api.model.ObjectFactory
10
import org.gradle.api.provider.ListProperty
11
import org.gradle.api.provider.Property
12
import org.gradle.api.tasks.Input
13
import org.gradle.api.tasks.InputDirectory
14
import org.gradle.api.tasks.TaskAction
15
import org.gradle.kotlin.dsl.listProperty
16
import org.gradle.kotlin.dsl.property
17
import javax.inject.Inject
18

19
/**
20
 * TODO specify outputs: write a file after success upload (with link for example)
21
 * TODO test caching
22
 */
23
public abstract class QAppsUploadTask @Inject constructor(
24
    objects: ObjectFactory
25
) : DefaultTask() {
26

27
    @Input
28
    public val variantName: Property<String> = objects.property()
29

30
    @Input
31
    public val comment: Property<String> = objects.property()
32

33
    @Input
34
    public val branch: Property<String> = objects.property()
35

36
    @Input
37
    public val host: Property<String> = objects.property()
38

39
    @Input
40
    public val versionName: Property<String> = objects.property()
41

42
    @Input
43
    public val versionCode: Property<String> = objects.property()
44

45
    @Input
46
    public val packageName: Property<String> = objects.property()
47

48
    @Input
49
    public val releaseChain: Property<Boolean> = objects.property<Boolean>().convention(false)
50

51
    @Input
52
    public val releaseBuildVariants: ListProperty<String> = objects.listProperty()
53

54
    @get:InputDirectory
55
    public abstract val apkDirectory: DirectoryProperty
56

57
    @TaskAction
58
    public fun upload() {
59
        val apk = apkDirectory.get().getApkOrThrow()
60

61
        val uploadResult = QAppsUploadAction(
62
            apk = apk,
63
            comment = comment.get(),
64
            host = host.get(),
65
            branch = branch.get(),
66
            versionName = versionName.get(),
67
            versionCode = versionCode.get(),
68
            packageName = packageName.get(),
69
            releaseChain = releaseChain.getOrElse(false) && isReleaseBuildVariant(variantName.get()),
70
            loggerFactory = Slf4jGradleLoggerFactory,
71
            httpClientBuilder = OkHttpClient.Builder()
72
        ).upload()
73

74
        uploadResult.fold(
75
            { logger.info("Upload to qapps was successful: ${apk.path}") },
76
            { project.buildFailer.failBuild("Can't upload to qapps: ${apk.path};", it) }
77
        )
78
    }
79

80
    private fun isReleaseBuildVariant(variantName: String): Boolean {
81
        return releaseBuildVariants.map { variants ->
82
            variants.contains(variantName)
83
        }.getOrElse(false)
84
    }
85
}
86

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.