57 lines
2.0 KiB
Plaintext
57 lines
2.0 KiB
Plaintext
import io.gitlab.jfronny.scripts.*
|
|
import org.eclipse.jgit.api.Git
|
|
import java.awt.Toolkit
|
|
import java.awt.datatransfer.StringSelection
|
|
|
|
val isRelease = project.hasProperty("release")
|
|
|
|
versionS = "0.0.0+nogit"
|
|
versionType = VersionType.ALPHA
|
|
if (File(projectDir, ".git").exists()) {
|
|
Git.open(projectDir).use { git ->
|
|
versionS = "0.0.0+notag"
|
|
val tags: List<Tag> = git.getTags()
|
|
if (tags.isNotEmpty()) {
|
|
if (tags[0].fullMessage != null) changelog += "${tags[0].fullMessage}\n"
|
|
versionS = tags[0].name
|
|
val vt = when(versionS[0]) {
|
|
'v' -> VersionType.RELEASE
|
|
'b' -> VersionType.BETA
|
|
'a' -> VersionType.ALPHA
|
|
else -> null
|
|
}
|
|
versionType = vt ?: VersionType.RELEASE
|
|
if (vt != null) versionS = versionS.substring(1)
|
|
if (isRelease) {
|
|
changelog += "Commits in ${versionType.displayName} $versionS:\n"
|
|
changelog += git.log(if (tags.size >= 2) tags[1].id else null, tags[0].id)
|
|
.reversed()
|
|
.joinToString("\n") { "- ${it.shortMessage}" }
|
|
} else {
|
|
changelog += "Commits after ${versionType.displayName} $versionS:\n"
|
|
changelog += git.log(tags[0].id, git.repository.resolve("HEAD"))
|
|
.reversed()
|
|
.joinToString("\n") { "- ${it.shortMessage}" }
|
|
}
|
|
} else {
|
|
changelog += "Commits after inception:\n"
|
|
changelog += git.log().all().call()
|
|
.reversed()
|
|
.joinToString("\n") { "- ${it.shortMessage}" }
|
|
}
|
|
}
|
|
} else changelog = "No changelog"
|
|
|
|
if (!isRelease) {
|
|
versionS += "-SNAPSHOT"
|
|
}
|
|
|
|
println(changelog)
|
|
|
|
tasks.register("copyVersionNumber") {
|
|
doLast {
|
|
Toolkit.getDefaultToolkit().systemClipboard.setContents(StringSelection(versionS), null)
|
|
println("Copied version number: $versionS")
|
|
}
|
|
}
|