
com.datadog.gradle.plugin.GenerateBuildIdTask.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dd-sdk-android-gradle-plugin Show documentation
Show all versions of dd-sdk-android-gradle-plugin Show documentation
Plugin to upload Proguard/R8 mapping files to Datadog.
The newest version!
/*
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2020-Present Datadog, Inc.
*/
package com.datadog.gradle.plugin
import com.datadog.gradle.plugin.internal.variant.AppVariant
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.file.Directory
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFile
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.TaskProvider
import java.util.UUID
/**
* This task generates unique Build ID which is later used to match error and mapping file.
*/
abstract class GenerateBuildIdTask : DefaultTask() {
/**
* Directory to store build ID file.
*/
@get:OutputDirectory
abstract val buildIdDirectory: DirectoryProperty
/**
* File containing build ID.
*/
@get:Internal
val buildIdFile: Provider = buildIdDirectory.file(BUILD_ID_FILE_NAME)
/**
* Variant name this task is linked to.
*/
@get:Internal
abstract val variantName: Property
init {
outputs.upToDateWhen { false }
// not a part of any group, we don't want to expose it
description = "Generates a unique build ID to associate mapping file and application."
}
/**
* Generates unique build ID and saves it to a file.
*/
@TaskAction
fun generateBuildId() {
val buildIdDirectory = buildIdDirectory.get().asFile
buildIdDirectory.mkdirs()
val buildId = UUID.randomUUID().toString()
logger.info("Generated buildId=$buildId for variant=${variantName.get()}")
buildIdFile.get().asFile
.writeText(buildId)
}
internal companion object {
private const val TASK_NAME = "generateBuildId"
/**
* Name of the file containing build ID information.
*/
const val BUILD_ID_FILE_NAME = "datadog.buildId"
/**
* Registers a new instance of [GenerateBuildIdTask] specific for the given [AppVariant].
*/
fun register(
target: Project,
variant: AppVariant,
buildIdDirectory: Provider
): TaskProvider {
val generateBuildIdTask = target.tasks.register(
TASK_NAME + variant.name.capitalize(),
GenerateBuildIdTask::class.java
) {
it.buildIdDirectory.set(buildIdDirectory)
it.variantName.set(variant.name)
}
variant.bindWith(generateBuildIdTask, buildIdDirectory)
return generateBuildIdTask
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy