src/main/kotlin/de/uapcore/lightpit/types/CommitRef.kt

changeset 319
900ecf43f791
parent 317
c2d7a9079853
equal deleted inserted replaced
318:50052f2fbb3f 319:900ecf43f791
29 data class CommitRef(val hash: String, val issueId: Int, val message: String) 29 data class CommitRef(val hash: String, val issueId: Int, val message: String)
30 30
31 /** 31 /**
32 * Takes a [commitLog] in format `::lpitref::{node}:{desc}` and parses commit references. 32 * Takes a [commitLog] in format `::lpitref::{node}:{desc}` and parses commit references.
33 * Supported references are (in this example, 47 is the issue ID): 33 * Supported references are (in this example, 47 is the issue ID):
34 * - fixes #47 34 * - fix, fixes, fixed #47
35 * - fix #47 35 * - close, closes, closed #47
36 * - closes #47 36 * - resolve, resolves, resolved #47
37 * - close #47 37 * - relate to #47
38 * - relates to #47 38 * - relates to #47
39 * - issue #37
39 */ 40 */
40 fun parseCommitRefs(commitLog: String): List<CommitRef> = buildList { 41 fun parseCommitRefs(commitLog: String): List<CommitRef> = buildList {
41 val marker = "::lpitref:" 42 val marker = "::lpitref:"
42 var currentHash = "" 43 var currentHash = ""
43 var currentDesc = "" 44 var currentDesc = ""
51 52
52 // skip possible preamble output 53 // skip possible preamble output
53 if (currentHash.isEmpty()) continue 54 if (currentHash.isEmpty()) continue
54 55
55 // scan the lines for commit references 56 // scan the lines for commit references
56 Regex("""(?:issue|relates? to|fix(?:e[sd])?|close(?:[sd])?) \#(\d+)""") 57 Regex("""(?:issue|relates? to|fix(?:e[sd])?|(?:close|resolve)[sd]?) #(\d+)""")
57 .findAll(line) 58 .findAll(line)
58 .map { it.groupValues[1] } 59 .map { it.groupValues[1] }
59 .map { it.toIntOrNull() } 60 .map { it.toIntOrNull() }
60 .filterNotNull() 61 .filterNotNull()
61 .forEach { commitId -> addFirst(CommitRef(currentHash, commitId, currentDesc)) } 62 .forEach { commitId -> addFirst(CommitRef(currentHash, commitId, currentDesc)) }

mercurial