/
parameter.go
88 lines (77 loc) · 2.17 KB
/
parameter.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
82
83
84
85
86
87
88
package sdk
import (
"fmt"
"strings"
)
// ParameterType defines the types of parameter of a pipeline or a action
type ParameterType string
// Different type of Parameter
const (
EnvironmentParameter ParameterType = "env"
PipelineParameter ParameterType = "pipeline"
ListParameter ParameterType = "list"
NumberParameter ParameterType = "number"
StringParameter ParameterType = "string"
TextParameter ParameterType = "text"
BooleanParameter ParameterType = "boolean"
)
var (
// AvailableParameterType list all existing parameters type in CDS
AvailableParameterType = []string{
string(StringParameter),
string(NumberParameter),
string(TextParameter),
string(EnvironmentParameter),
string(BooleanParameter),
string(ListParameter),
string(PipelineParameter),
}
)
// Value of passwords when leaving the API
const (
PasswordPlaceholder string = "**********"
)
// ParameterTypeFromString returns a parameter Type from a given string
func ParameterTypeFromString(in string) ParameterType {
switch in {
case EnvironmentParameter.String():
return EnvironmentParameter
case ListParameter.String():
return ListParameter
case NumberParameter.String():
return NumberParameter
case StringParameter.String():
return StringParameter
case TextParameter.String():
return TextParameter
case BooleanParameter.String():
return BooleanParameter
case PipelineParameter.String():
return PipelineParameter
default:
return TextParameter
}
}
func (t ParameterType) String() string {
return string(t)
}
// Parameter can be a String/Date/Script/URL...
type Parameter struct {
ID int64 `json:"id" yaml:"-"`
Name string `json:"name"`
Type ParameterType `json:"type"`
Value string `json:"value"`
Description string `json:"description" yaml:"desc,omitempty"`
}
// NewStringParameter creates a Parameter from a string with <name>=<value> format
func NewStringParameter(s string) (Parameter, error) {
var p Parameter
t := strings.SplitN(s, "=", 2)
if len(t) != 2 {
return p, fmt.Errorf("cds: wrong format parameter")
}
p.Name = t[0]
p.Type = StringParameter
p.Value = t[1]
return p, nil
}