(_ context.Context, pattern plugin.Pattern)
| 78 | } |
| 79 | |
| 80 | func (s *credentialHelperStore) GetSecrets(_ context.Context, pattern plugin.Pattern) ([]plugin.Envelope, error) { |
| 81 | credentials, err := client.List(s.ProgramFunc) |
| 82 | if err != nil { |
| 83 | return nil, err |
| 84 | } |
| 85 | |
| 86 | result := []plugin.Envelope{} |
| 87 | |
| 88 | resolvedAt := time.Now() |
| 89 | |
| 90 | for serverURL, username := range credentials { |
| 91 | var p plugin.ID |
| 92 | var err error |
| 93 | |
| 94 | if s.rewriter != nil { |
| 95 | p, err = s.rewriter(serverURL, username) |
| 96 | } else { |
| 97 | p, err = plugin.ParseID(DefaultKeyRewriter(serverURL)) |
| 98 | } |
| 99 | |
| 100 | if err != nil { |
| 101 | s.Warnf("could not parse key '%s' as secrets.ID: %s", serverURL, err) |
| 102 | continue |
| 103 | } |
| 104 | if pattern.Match(p) { |
| 105 | cred, err := client.Get(s.ProgramFunc, serverURL) |
| 106 | // ignore the error if we could not fetch it from credential-helper |
| 107 | if err != nil { |
| 108 | s.Warnf("could not get matched secret key '%s' from the credential-helper: %s", serverURL, err) |
| 109 | continue |
| 110 | } |
| 111 | result = append(result, plugin.Envelope{ |
| 112 | ID: p, |
| 113 | Value: []byte(cred.Secret), |
| 114 | Metadata: map[string]string{ |
| 115 | "ServerURL": cred.ServerURL, |
| 116 | "Username": cred.Username, |
| 117 | }, |
| 118 | Provider: "docker-credential-helper", |
| 119 | Version: "0.0.1", |
| 120 | ResolvedAt: resolvedAt, |
| 121 | }) |
| 122 | } |
| 123 | } |
| 124 | if len(result) == 0 { |
| 125 | return nil, plugin.ErrNotFound |
| 126 | } |
| 127 | return result, nil |
| 128 | } |
| 129 | |
| 130 | func (s *credentialHelperStore) Run(ctx context.Context) error { |
| 131 | <-ctx.Done() |
nothing calls this directly
no test coverage detected