@@ -49,6 +49,11 @@ 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" },
56
+ },
52
57
},
53
58
Commands : []* cli.Command {
54
59
{
@@ -133,11 +138,14 @@ func mainCmd(c *cli.Context) error {
133
138
}
134
139
if err != nil {
135
140
log .WithField ("provider" , c .String ("provider" )).WithError (err ).Error ("failed to initialize secrets provider" )
141
+ if c .Bool ("exit-early" ) {
142
+ os .Exit (1 )
143
+ }
136
144
}
137
145
138
146
// Launch main command
139
147
var childPid int
140
- childPid , err = run (ctx , provider , c .Args ().Slice ())
148
+ childPid , err = run (ctx , provider , c .Bool ( "exit-early" ), c . Args ().Slice ())
141
149
if err != nil {
142
150
log .WithError (err ).Error ("failed to run" )
143
151
os .Exit (1 )
@@ -177,7 +185,7 @@ func removeZombies(childPid int) {
177
185
}
178
186
179
187
// run passed command
180
- func run (ctx context.Context , provider secrets.Provider , commandSlice []string ) (childPid int , err error ) {
188
+ func run (ctx context.Context , provider secrets.Provider , exitEarly bool , commandSlice []string ) (childPid int , err error ) {
181
189
var commandStr string
182
190
var argsSlice []string
183
191
@@ -209,6 +217,10 @@ func run(ctx context.Context, provider secrets.Provider, commandSlice []string)
209
217
cmd .Env , err = provider .ResolveSecrets (ctx , os .Environ ())
210
218
if err != nil {
211
219
log .WithError (err ).Error ("failed to resolve secrets" )
220
+ if exitEarly {
221
+ log .Error ("Exiting early unable to retrieve secrets" )
222
+ os .Exit (1 )
223
+ }
212
224
}
213
225
} else {
214
226
log .Warn ("no secrets provider available; using environment without resolving secrets" )
0 commit comments