Skip to content

Instantly share code, notes, and snippets.

@gregoriomelo
Created April 13, 2018 17:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gregoriomelo/f2b37f40e8a10c41ad4d48737463a5d1 to your computer and use it in GitHub Desktop.
Save gregoriomelo/f2b37f40e8a10c41ad4d48737463a5d1 to your computer and use it in GitHub Desktop.
Checks whether a commit message say RELEASE and has a semver version number
def fullReleaseCommit = "STORY-987 RELEASE 1.3.0 There's this new release"
def regularCommit = "STORY-999 No release here"
def releaseCommitWithoutVersionNumber = "STORY-987 RELEASE Sorry! Forgot the version number"
class CommitMessage {
final releaseTextTrigger = "RELEASE"
final versionPattern = /.*(\d+).(\d+).(\d+).*/
final String message
CommitMessage(message) {
this.message = message
}
String toString() {
message
}
boolean isReleaseCommit() {
final isThereVersionNumber = message =~ versionPattern
message.contains(releaseTextTrigger) && isThereVersionNumber
}
def releaseVersion() {
final versionNumber = message =~ versionPattern
[major: versionNumber[0][1], minor: versionNumber[0][2], patch: versionNumber[0][2]]
}
}
assert new CommitMessage(regularCommit).isReleaseCommit() == false
assert new CommitMessage(releaseCommitWithoutVersionNumber).isReleaseCommit() == false
assert new CommitMessage(fullReleaseCommit).isReleaseCommit() == true
println new CommitMessage(fullReleaseCommit).releaseVersion()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment