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  }