mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-13 03:56:39 +00:00
99 lines
1.9 KiB
Go
99 lines
1.9 KiB
Go
|
package varnamelen
|
||
|
|
||
|
import "strings"
|
||
|
|
||
|
// stringsValue is the value of a list-of-strings flag.
|
||
|
type stringsValue struct {
|
||
|
Values []string
|
||
|
}
|
||
|
|
||
|
// declarationsValue is the value of a list-of-declarations flag.
|
||
|
type declarationsValue struct {
|
||
|
Values []declaration
|
||
|
}
|
||
|
|
||
|
// Set implements Value.
|
||
|
func (sv *stringsValue) Set(values string) error {
|
||
|
if strings.TrimSpace(values) == "" {
|
||
|
sv.Values = nil
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
parts := strings.Split(values, ",")
|
||
|
|
||
|
sv.Values = make([]string, len(parts))
|
||
|
|
||
|
for i, part := range parts {
|
||
|
sv.Values[i] = strings.TrimSpace(part)
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// String implements Value.
|
||
|
func (sv *stringsValue) String() string {
|
||
|
return strings.Join(sv.Values, ",")
|
||
|
}
|
||
|
|
||
|
// contains returns true if sv contains s.
|
||
|
func (sv *stringsValue) contains(s string) bool {
|
||
|
for _, v := range sv.Values {
|
||
|
if v == s {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
// Set implements Value.
|
||
|
func (dv *declarationsValue) Set(values string) error {
|
||
|
if strings.TrimSpace(values) == "" {
|
||
|
dv.Values = nil
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
parts := strings.Split(values, ",")
|
||
|
|
||
|
dv.Values = make([]declaration, len(parts))
|
||
|
|
||
|
for idx, part := range parts {
|
||
|
dv.Values[idx] = parseDeclaration(strings.TrimSpace(part))
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// String implements Value.
|
||
|
func (dv *declarationsValue) String() string {
|
||
|
parts := make([]string, len(dv.Values))
|
||
|
|
||
|
for idx, val := range dv.Values {
|
||
|
parts[idx] = val.name + " " + val.typ
|
||
|
}
|
||
|
|
||
|
return strings.Join(parts, ",")
|
||
|
}
|
||
|
|
||
|
// matchVariable returns true if vari matches any of the declarations in dv.
|
||
|
func (dv *declarationsValue) matchVariable(vari variable) bool {
|
||
|
for _, decl := range dv.Values {
|
||
|
if vari.match(decl) {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
// matchParameter returns true if param matches any of the declarations in dv.
|
||
|
func (dv *declarationsValue) matchParameter(param parameter) bool {
|
||
|
for _, decl := range dv.Values {
|
||
|
if param.match(decl) {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false
|
||
|
}
|