1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

Added autoGitTag to github and bintray configurations.

This commit is contained in:
Cedric Beust 2016-09-23 12:20:44 -07:00
parent 1b7eb08074
commit 850e335843
2 changed files with 95 additions and 35 deletions

View file

@ -0,0 +1,43 @@
package com.beust.kobalt.misc
import com.beust.kobalt.TaskResult
import com.beust.kobalt.api.Project
import com.google.inject.Inject
import java.io.File
class Git @Inject constructor() {
fun maybeTagRelease(project: Project, uploadResult: TaskResult, autoGitTag: Boolean) : TaskResult {
val result =
if (uploadResult.success && autoGitTag) {
val tagSuccess = tagRelease(project)
if (! tagSuccess) {
TaskResult(false, "Couldn't tag the project")
} else {
TaskResult()
}
} else {
TaskResult()
}
return result
}
private fun tagRelease(project: Project) : Boolean {
val success = try {
log(2, "Tagging this release as \"${project.version}\"")
val repo = org.eclipse.jgit.storage.file.FileRepositoryBuilder()
.setGitDir(File(KFiles.joinDir(project.directory, ".git")))
.readEnvironment()
.findGitDir()
.build()
val git = org.eclipse.jgit.api.Git(repo)
val ref = git.tag().setName(project.version).call()
git.push().setPushTags().call()
true
} catch(ex: Exception) {
warn("Couldn't create tag ${project.version}: ${ex.message}", ex)
false
}
return success
}
}

View file

@ -7,14 +7,10 @@ import com.beust.kobalt.api.Project
import com.beust.kobalt.api.annotation.Directive
import com.beust.kobalt.api.annotation.Task
import com.beust.kobalt.internal.DocUrl
import com.beust.kobalt.internal.KobaltSettings
import com.beust.kobalt.localMaven
import com.beust.kobalt.maven.Md5
import com.beust.kobalt.maven.PomGenerator
import com.beust.kobalt.misc.GithubApi2
import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.LocalProperties
import com.beust.kobalt.misc.warn
import com.beust.kobalt.misc.*
import java.io.File
import java.net.URL
import java.nio.file.Paths
@ -26,7 +22,7 @@ import javax.inject.Singleton
@Singleton
public class PublishPlugin @Inject constructor(val files: KFiles, val factory: PomGenerator.IFactory,
val bintrayFactory: BintrayApi.IFactory, val github: GithubApi2, val localProperties: LocalProperties,
val settings: KobaltSettings) : BasePlugin() {
val git: Git) : BasePlugin() {
override val name = PLUGIN_NAME
@ -118,30 +114,34 @@ public class PublishPlugin @Inject constructor(val files: KFiles, val factory: P
val configuration = bintrayConfigurations[project.name]
val messages = arrayListOf<String>()
if (configuration != null) {
//
// Upload to Maven
//
val trMaven = jcenter.uploadMaven(project, findArtifactFiles(project), configuration)
success = trMaven.success
if (! success) messages.add(trMaven.errorMessage!!)
val tmpResult =
if (configuration != null) {
//
// Upload to Maven
//
val trMaven = jcenter.uploadMaven(project, findArtifactFiles(project), configuration)
success = trMaven.success
if (! success) messages.add(trMaven.errorMessage!!)
//
// Upload individual files, if applicable
//
configuration.files.forEach {
val taskResult = jcenter.uploadFile(project, File(project.directory, it.first), configuration)
success = success and taskResult.success
if (!taskResult.success) {
messages.add(taskResult.errorMessage!!)
//
// Upload individual files, if applicable
//
configuration.files.forEach {
val taskResult = jcenter.uploadFile(project, File(project.directory, it.first), configuration)
success = success and taskResult.success
if (!taskResult.success) {
messages.add(taskResult.errorMessage!!)
}
}
git.maybeTagRelease(project, TaskResult(), configuration.autoGitTag)
} else {
context.logger.log(project.name, 2, "Couldn't find any jcenter{} configuration, not uploading anything")
TaskResult()
}
} else {
context.logger.log(project.name, 2, "Couldn't find any jcenter{} configuration, not uploading anything")
success = true
}
return TaskResult(success, messages.joinToString("\n "))
val result = TaskResult(tmpResult.success, messages.joinToString("\n "))
return result
}
@Task(name = TASK_UPLOAD_GITHUB, description = "Upload files to Github",
@ -157,16 +157,19 @@ public class PublishPlugin @Inject constructor(val files: KFiles, val factory: P
//
// Upload individual files, if applicable
//
if (configuration != null) {
configuration.files.forEach {
logk(project.name, 2, "Uploading $it tag: ${project.version}")
github.uploadRelease(project.name, project.version!!, it)
val result =
if (configuration != null) {
configuration.files.forEach {
logk(project.name, 2, "Uploading $it tag: ${project.version}")
github.uploadRelease(project.name, project.version!!, it)
}
git.maybeTagRelease(project, TaskResult(), configuration.autoGitTag)
} else {
warn("Couldn't find any github{} configuration, not uploading anything")
TaskResult()
}
} else {
warn("Couldn't find any github{} configuration, not uploading anything")
}
return TaskResult()
return result
}
/**
@ -189,8 +192,15 @@ public class PublishPlugin @Inject constructor(val files: KFiles, val factory: P
data class GithubConfig(val project: Project) {
val files = arrayListOf<File>()
/**
* If true, automatically tag this release with the current version number and push that tag to origin when
* the uploadGithub task is called.
*/
@Directive
public fun file(filePath: String, url: String) {
var autoGitTag: Boolean = false
@Directive
fun file(filePath: String, url: String) {
files.add(File(filePath))
}
}
@ -219,6 +229,13 @@ data class BintrayConfig(val project: Project) {
@Directive
var sign: Boolean = false
/**
* If true, automatically tag this release with the current version number and push that tag to origin when
* the uploadBintray task is called.
*/
@Directive
var autoGitTag: Boolean = true
val files = arrayListOf<Pair<String, String>>()
@Directive