-
Notifications
You must be signed in to change notification settings - Fork 11
/
buildstatus.go
81 lines (69 loc) · 2.09 KB
/
buildstatus.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
72
73
74
75
76
77
78
79
80
81
package flag
import (
"errors"
"fmt"
"strings"
"github.com/simplesurance/baur"
)
// Valid commandline values
const (
buildStatusExist = "exist"
buildStatusPending = "pending"
buildStatusInputUndefined = "inputs-undefined"
buildStatusBuildCommandUndefined = "build-command-undefined"
)
// BuildStatusFormatDescription is the format description for the flag
const BuildStatusFormatDescription string = "one of " +
buildStatusExist + ", " +
buildStatusPending + ", " +
buildStatusInputUndefined + ", " +
buildStatusBuildCommandUndefined
// BuildStatus is a commandline parameter to specify build status filters
type BuildStatus struct {
Status baur.BuildStatus
isSet bool
}
// String returns the default value in the usage output
func (b *BuildStatus) String() string {
return ""
}
// Set parses the passed string and sets the SortFlagValue
func (b *BuildStatus) Set(val string) error {
b.isSet = true
switch strings.ToLower(val) {
case buildStatusExist:
b.Status = baur.BuildStatusExist
case buildStatusPending:
b.Status = baur.BuildStatusPending
case buildStatusInputUndefined:
b.Status = baur.BuildStatusPending
case buildStatusBuildCommandUndefined:
b.Status = baur.BuildStatusBuildCommandUndefined
default:
return errors.New("status must be " + BuildStatusFormatDescription)
}
return nil
}
// Type returns the format description of the flag
func (b *BuildStatus) Type() string {
return "<STATUS>"
}
// Usage returns a usage description, important parts are passed through
// highlightFn
func (b *BuildStatus) Usage(highlightFn func(a ...interface{}) string) string {
return strings.TrimSpace(fmt.Sprintf(`
Only show applications with this build status
Format: %s
where %s is one of: %s, %s, %s, %s`,
highlightFn(b.Type()),
highlightFn("STATUS"),
highlightFn(buildStatusExist),
highlightFn(buildStatusPending),
highlightFn(buildStatusInputUndefined),
highlightFn(buildStatusBuildCommandUndefined),
))
}
// IsSet returns true if the flag parsed a commandline value (Set() was called)
func (b *BuildStatus) IsSet() bool {
return b.isSet
}