@@ -191,9 +191,6 @@ func Main() error {
191
191
err := cmd .Run ()
192
192
// if the subprocess exited with an error code then do not print any
193
193
// extra information but do exit with the same code
194
- if exiterr , ok := err .(* exec.ExitError ); ok {
195
- os .Exit (exiterr .ExitCode ())
196
- }
197
194
if err != nil {
198
195
return fmt .Errorf ("error re-executing ourselves in a new user namespace: %w" , err )
199
196
}
@@ -232,9 +229,6 @@ func Main() error {
232
229
cmd .Stdout = os .Stdout
233
230
cmd .Stderr = os .Stderr
234
231
err := cmd .Run ()
235
- if exiterr , ok := err .(* exec.ExitError ); ok {
236
- os .Exit (exiterr .ExitCode ())
237
- }
238
232
if err != nil {
239
233
return fmt .Errorf ("error launching final subprocess from third stage: %w" , err )
240
234
}
@@ -807,12 +801,7 @@ func Main() error {
807
801
// wait for the subprocess to complete
808
802
err = cmd .Wait ()
809
803
if err != nil {
810
- exitError , isExitError := err .(* exec.ExitError )
811
- if isExitError {
812
- os .Exit (exitError .ExitCode ())
813
- } else {
814
- return fmt .Errorf ("error running subprocess: %v" , err )
815
- }
804
+ return fmt .Errorf ("error running subprocess: %w" , err )
816
805
}
817
806
return nil
818
807
}
@@ -822,6 +811,14 @@ func main() {
822
811
log .SetFlags (0 )
823
812
err := Main ()
824
813
if err != nil {
814
+ // if we exit due to a subprocess returning with non-zero exit code then do not
815
+ // print any extraneous output but do exit with the same code
816
+ var exitError * exec.ExitError
817
+ if errors .As (err , & exitError ) {
818
+ os .Exit (exitError .ExitCode ())
819
+ }
820
+
821
+ // for any other kind of error, print the error and exit with code 1
825
822
log .Fatal (err )
826
823
}
827
824
}
0 commit comments