Ignore already completed repos

Signed-off-by: Andreas Lindhé <andreas@lindhe.io>
pull/7791/head
Andreas Lindhé 6 years ago
parent b2518653c2
commit 9a4738291c

@ -97,13 +97,39 @@ func (r *repoListWriter) encodeByFormat(out io.Writer, format output.Format) err
return nil return nil
} }
// Returns all repos from repos, except those with names matching ignoredRepoNames
// Inspired by https://stackoverflow.com/a/28701031/893211
func filterRepos(repos []*repo.Entry, ignoredRepoNames []string) []*repo.Entry {
// if ignoredRepoNames is nil, just return repo
if ignoredRepoNames == nil {
return repos
}
filteredRepos := make([]*repo.Entry, 0)
ignored := make(map[string]bool, 0)
for _, repo := range ignoredRepoNames {
ignored[repo] = true
}
for _, repo := range repos {
_, removed := ignored[repo.Name]
if !removed {
filteredRepos = append(filteredRepos, repo)
}
}
return filteredRepos
}
// Provide dynamic auto-completion for repo names // Provide dynamic auto-completion for repo names
func compListRepos(prefix string) []string { func compListRepos(prefix string, ignoredRepoNames []string) []string {
var rNames []string var rNames []string
f, err := repo.LoadFile(settings.RepositoryConfig) f, err := repo.LoadFile(settings.RepositoryConfig)
if err == nil && len(f.Repositories) > 0 { if err == nil && len(f.Repositories) > 0 {
for _, repo := range f.Repositories { filteredRepos := filterRepos(f.Repositories, ignoredRepoNames)
for _, repo := range filteredRepos {
if strings.HasPrefix(repo.Name, prefix) { if strings.HasPrefix(repo.Name, prefix) {
rNames = append(rNames, repo.Name) rNames = append(rNames, repo.Name)
} }

@ -55,7 +55,7 @@ func newRepoRemoveCmd(out io.Writer) *cobra.Command {
// Function providing dynamic auto-completion // Function providing dynamic auto-completion
completion.RegisterValidArgsFunc(cmd, func(cmd *cobra.Command, args []string, toComplete string) ([]string, completion.BashCompDirective) { completion.RegisterValidArgsFunc(cmd, func(cmd *cobra.Command, args []string, toComplete string) ([]string, completion.BashCompDirective) {
return compListRepos(toComplete), completion.BashCompDirectiveNoFileComp return compListRepos(toComplete, args), completion.BashCompDirectiveNoFileComp
}) })
return cmd return cmd

@ -298,7 +298,7 @@ func compListCharts(toComplete string, includeFiles bool) ([]string, completion.
var completions []string var completions []string
// First check completions for repos // First check completions for repos
repos := compListRepos("") repos := compListRepos("", nil)
for _, repo := range repos { for _, repo := range repos {
repoWithSlash := fmt.Sprintf("%s/", repo) repoWithSlash := fmt.Sprintf("%s/", repo)
if strings.HasPrefix(toComplete, repoWithSlash) { if strings.HasPrefix(toComplete, repoWithSlash) {

Loading…
Cancel
Save