~james/core

core/cilogs/cihelpers.go -rw-r--r-- 926 bytes
452f17b7 — james chore(import): snapshot james.dad.town/core at f70c71c7696a 16 hours ago
                                                                                
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
package cilogs

import (
	"time"

	"tangled.org/core/api/org_tangled"
)

// helper functions against generated code

func workflowElapsed(wf *org_tangled.CiDefs_WorkflowRun, now time.Time) time.Duration {
	if wf.StartedAt == nil {
		return 0
	}
	started, err := time.Parse(time.RFC3339, *wf.StartedAt)
	if err != nil {
		return 0
	}
	if wf.FinishedAt == nil {
		return now.Sub(started)
	}
	finished, err := time.Parse(time.RFC3339, *wf.FinishedAt)
	if err != nil {
		return 0
	}
	return finished.Sub(started)
}

func workflowName(wf *org_tangled.CiDefs_WorkflowRun) string {
	if wf.Name != nil {
		return *wf.Name
	}
	return wf.Id
}

var finishedStatuses = map[string]bool{
	"failed":    true,
	"timeout":   true,
	"cancelled": true,
	"success":   true,
}

func pipelineFinished(p *org_tangled.CiDefs_Pipeline) bool {
	for _, wf := range p.Workflows {
		if !finishedStatuses[wf.Status] {
			return false
		}
	}
	return true
}