com.bugsnag.gradle.android.CreateBuildTask.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bugsnag-gradle-plugin Show documentation
Show all versions of bugsnag-gradle-plugin Show documentation
Gradle plugin to automatically upload mapping files to BugSnag.
The newest version!
package com.bugsnag.gradle.android
import com.bugsnag.gradle.BugsnagCliTask
import com.bugsnag.gradle.dsl.VariantConfiguration
import org.gradle.api.Project
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.MapProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Nested
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction
internal abstract class CreateBuildTask : BugsnagCliTask() {
@get:Optional
@get:Input
abstract val metadata: MapProperty
@get:Nested
abstract val systemMetadata: SystemMetadata
@get:Nested
abstract val variantMetadata: AndroidVariantMetadata
@get:InputFile
abstract val androidManifestFile: RegularFileProperty
@get:Input
abstract val projectPath: Property
@TaskAction
fun createBuild() {
val buildMetadata = systemMetadata.toMap() + metadata.orElse(emptyMap()).get()
val metadataOption = buildMetadata.entries.joinToString(";") { (key, value) -> "$key=$value" }
exec("create-build") {
if (globalOptions.buildApiEndpointRootUrl.isPresent) {
"build-api-root-url" `=` globalOptions.buildApiEndpointRootUrl.get()
}
"metadata" `=` metadataOption
"app-manifest" `=` androidManifestFile
"builder-name" `=` systemMetadata.builderName
"release-stage" `=` variantMetadata.variantName
"version-name" `=` variantMetadata.versionName
"version-code" `=` variantMetadata.versionCode.map { it.toString() }
+projectPath.get().toString()
}
}
interface SystemMetadata {
@get:Input
@get:Optional
val osArch: Property
@get:Input
@get:Optional
val osName: Property
@get:Input
@get:Optional
val osVersion: Property
@get:Input
@get:Optional
val javaVersion: Property
@get:Input
@get:Optional
val gradleVersion: Property
@get:Input
@get:Optional
val gitVersion: Property
@get:Optional
@get:Input
val builderName: Property
}
}
private const val PROP_OS_ARCH = "os.arch"
private const val PROP_OS_NAME = "os.name"
private const val PROP_OS_VERSION = "os.version"
private const val PROP_JAVA_VERSION = "java.version"
private const val PROP_USER_NAME = "user.name"
internal fun CreateBuildTask.SystemMetadata.configureFrom(project: Project, bugsnag: VariantConfiguration) {
val providerFactory = project.providers
osArch.set(providerFactory.systemProperty(PROP_OS_ARCH))
osName.set(providerFactory.systemProperty(PROP_OS_NAME))
osVersion.set(providerFactory.systemProperty(PROP_OS_VERSION))
javaVersion.set(providerFactory.systemProperty(PROP_JAVA_VERSION))
gradleVersion.set(project.gradle.gradleVersion)
builderName.convention(providerFactory.systemProperty(PROP_USER_NAME))
bugsnag.builderName?.let { builderName.set(it) }
}
internal fun CreateBuildTask.SystemMetadata.toMap(): Map =
mapOf(
"os_arch" to osArch.orNull,
"os_name" to osName.orNull,
"os_version" to osVersion.orNull,
"java_version" to javaVersion.orNull,
"gradle_version" to gradleVersion.orNull,
"git_version" to gitVersion.orNull
)
© 2015 - 2025 Weber Informatics LLC | Privacy Policy