github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/fly/rc/target_name.go (about) 1 package rc 2 3 import ( 4 "sort" 5 "strings" 6 7 "github.com/jessevdk/go-flags" 8 ) 9 10 type TargetName string 11 12 func (name *TargetName) UnmarshalFlag(value string) error { 13 *name = TargetName(value) 14 return nil 15 } 16 17 func (name *TargetName) Complete(match string) []flags.Completion { 18 flyTargets, err := LoadTargets() 19 if err != nil { 20 return []flags.Completion{} 21 } 22 23 names := []string{} 24 for name := range flyTargets { 25 if strings.HasPrefix(string(name), match) { 26 names = append(names, string(name)) 27 } 28 } 29 30 sort.Strings(names) 31 32 comps := make([]flags.Completion, len(names)) 33 for idx, name := range names { 34 comps[idx].Item = name 35 } 36 37 return comps 38 }