/
colour.go
71 lines (62 loc) · 1.84 KB
/
colour.go
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
// Copyright (c) 2020-2021 C4 Project
//
// This file is part of c4t.
// Licenced under the MIT licence; see `LICENSE`.
package dash
import (
"github.com/c4-project/c4t/internal/director"
"github.com/c4-project/c4t/internal/model/service/compiler/optlevel"
"github.com/c4-project/c4t/internal/subject/status"
"github.com/mum4k/termdash/cell"
)
const (
colourCopy = cell.ColorWhite
colourOptNone = cell.ColorBlue
colourOptNormal = cell.ColorMagenta
colourOptBreak = cell.ColorRed
colourAdd = cell.ColorBlue
colourLift = cell.ColorCyan
colourRun = cell.ColorGreen
colourUnknown = cell.ColorWhite
colourOk = cell.ColorGreen
colourFiltered = cell.ColorWhite // colourUnknown is unlikely to appear in practice, so duplication is ok
colourFlagged = cell.ColorYellow
colourCompileFail = cell.ColorRed
colourCompileTimeout = cell.ColorBlue
colourRunFail = cell.ColorMagenta
colourRunTimeout = cell.ColorCyan
)
// statusColours maps each status flag to its colour.
// This will need to be kept in sync with the status enum.
var statusColours = [status.Last + 1]cell.Color{
colourUnknown,
colourOk,
colourFiltered,
colourFlagged,
colourCompileFail,
colourCompileTimeout,
colourRunFail,
colourRunTimeout,
}
// optColour divines a colour to signify the optimisation level described by o.
func optColour(o *optlevel.Named) cell.Color {
switch {
case o == nil || !o.Optimises:
return colourOptNone
case o.BreaksStandards:
return colourOptBreak
default:
return colourOptNormal
}
}
// summaryColor retrieves a colour to use for the log header of sc, according to a 'traffic lights' system.
func summaryColor(sc director.CycleAnalysis) cell.Color {
switch {
case sc.Analysis.HasFailures():
return colourCompileFail
case sc.Analysis.HasFlagged():
return colourFlagged
default:
return colourRun
}
}