github.com/drone/runner-go@v1.12.0/secret/static.go (about) 1 // Copyright 2019 Drone.IO Inc. All rights reserved. 2 // Use of this source code is governed by the Polyform License 3 // that can be found in the LICENSE file. 4 5 package secret 6 7 import ( 8 "context" 9 "strings" 10 11 "github.com/drone/runner-go/logger" 12 13 "github.com/drone/drone-go/drone" 14 ) 15 16 // Static returns a new static secret provider. The static 17 // secret provider finds and returns a named secret from the 18 // static list. 19 func Static(secrets []*drone.Secret) Provider { 20 return &static{secrets} 21 } 22 23 // StaticVars returns a new static secret provider. The static 24 // secret provider finds and returns a named secret from the 25 // static key value pairs. 26 func StaticVars(vars map[string]string) Provider { 27 var secrets []*drone.Secret 28 for k, v := range vars { 29 secrets = append(secrets, &drone.Secret{ 30 Name: k, 31 Data: v, 32 }) 33 } 34 return Static(secrets) 35 } 36 37 type static struct { 38 secrets []*drone.Secret 39 } 40 41 func (p *static) Find(ctx context.Context, in *Request) (*drone.Secret, error) { 42 logger := logger.FromContext(ctx). 43 WithField("name", in.Name). 44 WithField("kind", "secret") 45 46 for _, secret := range p.secrets { 47 if !strings.EqualFold(secret.Name, in.Name) { 48 continue 49 } 50 // The secret can be restricted to non-pull request 51 // events. If the secret is restricted, return 52 // empty results. 53 if secret.PullRequest == false && 54 in.Build.Event == drone.EventPullRequest { 55 logger.Trace("secret: database: restricted from pull requests") 56 continue 57 } 58 59 logger.Trace("secret: database: found matching secret") 60 return secret, nil 61 } 62 63 logger.Trace("secret: database: no matching secret") 64 return nil, nil 65 }