Skip to content

Commit 5b9df7b

Browse files
author
Brian Gibbins
authored
Pass errors from cobra Execute back to main for correct exit code (open-telemetry#28)
* pass errors from cobra execute back to main * print the error
1 parent a6b22d3 commit 5b9df7b

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

cmd/root.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ var (
4242
)
4343

4444
// Execute is the main entrypoint for this application
45-
func Execute() {
45+
func Execute() error {
4646
cobra.OnInitialize(initConfig)
4747

4848
cmd := &cobra.Command{
@@ -52,12 +52,12 @@ func Execute() {
5252

5353
if err := cfg.Validate(); err != nil {
5454
cfg.Logger.Error(err, "invalid configuration")
55-
return nil
55+
return err
5656
}
5757

5858
if err := cfg.ParseModules(); err != nil {
5959
cfg.Logger.Error(err, "invalid module configuration")
60-
return nil
60+
return err
6161
}
6262

6363
return builder.GenerateAndCompile(cfg)
@@ -83,11 +83,15 @@ func Execute() {
8383
// tie Viper to flags
8484
if err := viper.BindPFlags(cmd.Flags()); err != nil {
8585
cfg.Logger.Error(err, "failed to bind flags")
86+
return err
8687
}
8788

8889
if err := cmd.Execute(); err != nil {
8990
cfg.Logger.Error(err, "failed to run")
91+
return err
9092
}
93+
94+
return nil
9195
}
9296

9397
func initConfig() {
@@ -113,6 +117,7 @@ func initConfig() {
113117
// convert Viper's internal state into our configuration object
114118
if err := viper.Unmarshal(&cfg); err != nil {
115119
cfg.Logger.Error(err, "failed to parse the config")
120+
cobra.CheckErr(err)
116121
return
117122
}
118123
}

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ go 1.14
1919
require (
2020
github.com/go-logr/logr v0.2.1
2121
github.com/go-logr/zapr v0.2.0
22-
github.com/spf13/cobra v1.0.0
22+
github.com/spf13/cobra v1.1.3
2323
github.com/spf13/viper v1.7.1
2424
github.com/stretchr/testify v1.6.1
2525
go.uber.org/zap v1.10.0

go.sum

+7
Original file line numberDiff line numberDiff line change
@@ -280,11 +280,16 @@ github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
280280
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
281281
github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8=
282282
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
283+
github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M=
284+
github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
283285
github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
284286
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
285287
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
286288
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
289+
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
290+
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
287291
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
292+
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
288293
github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=
289294
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
290295
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -455,6 +460,8 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
455460
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
456461
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
457462
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
463+
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
464+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
458465
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
459466
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
460467
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

main.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,15 @@
1515
package main
1616

1717
import (
18+
"fmt"
19+
"os"
20+
1821
"github.com/open-telemetry/opentelemetry-collector-builder/cmd"
1922
)
2023

2124
func main() {
22-
cmd.Execute()
25+
if err := cmd.Execute(); err != nil {
26+
fmt.Println(err.Error())
27+
os.Exit(1)
28+
}
2329
}

0 commit comments

Comments
 (0)