/
trigger_buildfinish_options.go
44 lines (34 loc) · 1.32 KB
/
trigger_buildfinish_options.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
package teamcity
import (
"strconv"
"strings"
)
// TriggerBuildFinishOptions represents optional settings for a 'Finish Build' Trigger type.
type TriggerBuildFinishOptions struct {
AfterSuccessfulBuildOnly bool `prop:"afterSucessfulBuildOnly"`
BranchFilter []string `prop:"branchFilter" separator:"\n"`
}
// NewTriggerBuildFinishOptions initialize a NewTriggerBuildFinishOptions
// branchFilter can be passed as "nil" to not filter on any specific branches
func NewTriggerBuildFinishOptions(afterSuccessfulBuildOnly bool, branchFilter []string) *TriggerBuildFinishOptions {
return &TriggerBuildFinishOptions{
AfterSuccessfulBuildOnly: afterSuccessfulBuildOnly,
BranchFilter: branchFilter,
}
}
func (o *TriggerBuildFinishOptions) properties() *Properties {
props := NewPropertiesEmpty()
//Defaults to false, so ommit emitting the property if 'false'
if o.AfterSuccessfulBuildOnly {
props.AddOrReplaceValue("afterSuccessfulBuildOnly", strconv.FormatBool(o.AfterSuccessfulBuildOnly))
}
if o.BranchFilter != nil && len(o.BranchFilter) > 0 {
props.AddOrReplaceValue("branchFilter", strings.Join(o.BranchFilter, "\n"))
}
return props
}
func (p *Properties) triggerBuildFinishOptions() *TriggerBuildFinishOptions {
var out TriggerBuildFinishOptions
fillStructFromProperties(&out, p)
return &out
}