-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpull-metadata.osl
More file actions
99 lines (92 loc) · 2.93 KB
/
Copy pathpull-metadata.osl
File metadata and controls
99 lines (92 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
def storedPullCommentCount(object pull) number (
if !pull.contains("commentCount") or pull.commentCount == null (
return -1
)
number count = pull.commentCount.toNum()
if count < 0 (
return 0
)
return count
)
def pullCommentCountAfterCreate(object pull, number actualCount) number (
number stored = storedPullCommentCount(pull)
if stored < 0 (
if actualCount < 0 (
return 0
)
return actualCount
)
return stored + 1
)
def pullCommentCountAfterDelete(object pull, number removed, number actualCount) number (
number stored = storedPullCommentCount(pull)
if stored < 0 (
if actualCount < 0 (
return 0
)
return actualCount
)
if removed < 0 (
removed = 0
)
number next = stored - removed
if next < 0 (
return 0
)
return next
)
def nextPullSequence(number legacySequence, array latestPulls) number (
number sequence = legacySequence
if latestPulls.len > 0 (
number latestSequence = latestPulls[1].assert(object).index.toNum()
if latestSequence > sequence (
sequence = latestSequence
)
)
return sequence + 1
)
def canonicalHistoryHead(object metadata) string (
string branch = "main"
if metadata.contains("gitBranch") and metadata.gitBranch != null and metadata.gitBranch.toStr() != "" (
branch = metadata.gitBranch.toStr()
) else if metadata.contains("branch") and metadata.branch != null and metadata.branch.toStr() != "" (
branch = metadata.branch.toStr()
)
object graph = {}
if metadata.contains("gitGraph") and metadata.gitGraph != null (
graph = metadata.gitGraph.assertElse(object, {})
) else if metadata.contains("graph") and metadata.graph != null (
graph = metadata.graph.assertElse(object, {})
)
if graph.contains("branchLogs") and graph.branchLogs != null (
array logs = graph.branchLogs.assertElse(array, [])
for i logs.len (
object branchLog = logs[i].assertElse(object, {})
if branchLog.contains("branch") and branchLog.branch.toStr() == branch and branchLog.contains("oids") and branchLog.oids != null (
array oids = branchLog.oids.assertElse(array, [])
if oids.len > 0 and oids[1].toStr() != "" (
return oids[1].toStr()
)
)
)
)
if metadata.contains("gitHead") and metadata.gitHead != null and metadata.gitHead.toStr() != "" (
return metadata.gitHead.toStr()
)
if metadata.contains("head") and metadata.head != null and metadata.head.toStr() != "" (
return metadata.head.toStr()
)
array commits = []
if metadata.contains("gitCommits") and metadata.gitCommits != null (
commits = metadata.gitCommits.assertElse(array, [])
) else if metadata.contains("commits") and metadata.commits != null (
commits = metadata.commits.assertElse(array, [])
)
if commits.len > 0 (
object commit = commits[1].assertElse(object, {})
if commit.contains("sha") and commit.sha.toStr() != "" (
return commit.sha.toStr()
)
)
return ""
)