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 = 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") } }