@@ -49,6 +49,10 @@ func main() {
49
49
Usage : "supported secrets manager provider ['aws', 'google']" ,
50
50
Value : "aws" ,
51
51
},
52
+ & cli.BoolFlag {
53
+ Name : "exit-early" ,
54
+ Usage : "exit when a provider fails or a secret is not found" ,
55
+ EnvVars : []string {"EXIT_EARLY" },
52
56
& cli.StringFlag {
53
57
Name : "google-project" ,
54
58
Usage : "the google cloud project for secrets without a project prefix" ,
@@ -137,11 +141,14 @@ func mainCmd(c *cli.Context) error {
137
141
}
138
142
if err != nil {
139
143
log .WithField ("provider" , c .String ("provider" )).WithError (err ).Error ("failed to initialize secrets provider" )
144
+ if c .Bool ("exit-early" ) {
145
+ os .Exit (1 )
146
+ }
140
147
}
141
148
142
149
// Launch main command
143
150
var childPid int
144
- childPid , err = run (ctx , provider , c .Args ().Slice ())
151
+ childPid , err = run (ctx , provider , c .Bool ( "exit-early" ), c . Args ().Slice ())
145
152
if err != nil {
146
153
log .WithError (err ).Error ("failed to run" )
147
154
os .Exit (1 )
@@ -181,7 +188,7 @@ func removeZombies(childPid int) {
181
188
}
182
189
183
190
// run passed command
184
- func run (ctx context.Context , provider secrets.Provider , commandSlice []string ) (childPid int , err error ) {
191
+ func run (ctx context.Context , provider secrets.Provider , exitEarly bool , commandSlice []string ) (childPid int , err error ) {
185
192
var commandStr string
186
193
var argsSlice []string
187
194
@@ -213,6 +220,10 @@ func run(ctx context.Context, provider secrets.Provider, commandSlice []string)
213
220
cmd .Env , err = provider .ResolveSecrets (ctx , os .Environ ())
214
221
if err != nil {
215
222
log .WithError (err ).Error ("failed to resolve secrets" )
223
+ if exitEarly {
224
+ log .Error ("Exiting early unable to retrieve secrets" )
225
+ os .Exit (1 )
226
+ }
216
227
}
217
228
} else {
218
229
log .Warn ("no secrets provider available; using environment without resolving secrets" )
0 commit comments