From 4656c87941a10019029f198fb017d9db18454d09 Mon Sep 17 00:00:00 2001 From: umarcor Date: Fri, 7 Jun 2019 19:13:15 +0200 Subject: [PATCH] cobra: check error return values --- cobra/cmd/add.go | 4 ++-- cobra/cmd/add_test.go | 6 ++---- cobra/cmd/helpers.go | 6 ++++-- cobra/cmd/init.go | 2 +- cobra/cmd/init_test.go | 4 +--- cobra/cmd/licenses.go | 3 ++- cobra/cmd/project.go | 2 +- cobra/cmd/root.go | 4 ++-- 8 files changed, 15 insertions(+), 16 deletions(-) diff --git a/cobra/cmd/add.go b/cobra/cmd/add.go index 6645a755..f8c29471 100644 --- a/cobra/cmd/add.go +++ b/cobra/cmd/add.go @@ -40,7 +40,7 @@ Example: cobra add server -> resulting in a new cmd/server.go`, Run: func(cmd *cobra.Command, args []string) { if len(args) < 1 { - er("add needs a name for the command") + er(fmt.Errorf("add needs a name for the command")) } wd, err := os.Getwd() @@ -72,7 +72,7 @@ Example: cobra add server -> resulting in a new cmd/server.go`, func init() { addCmd.Flags().StringVarP(&packageName, "package", "t", "", "target package name (e.g. github.com/spf13/hugo)") addCmd.Flags().StringVarP(&parentName, "parent", "p", "rootCmd", "variable name of parent command for this command") - addCmd.Flags().MarkDeprecated("package", "this operation has been removed.") + er(addCmd.Flags().MarkDeprecated("package", "this operation has been removed.")) } // validateCmdName returns source without any dashes and underscore. diff --git a/cobra/cmd/add_test.go b/cobra/cmd/add_test.go index de92fcea..2847a064 100644 --- a/cobra/cmd/add_test.go +++ b/cobra/cmd/add_test.go @@ -14,10 +14,8 @@ func TestGoldenAddCmd(t *testing.T) { } defer os.RemoveAll(command.AbsolutePath) - command.Project.Create() - if err := command.Create(); err != nil { - t.Fatal(err) - } + er(command.Project.Create()) + er(command.Create()) generatedFile := fmt.Sprintf("%s/cmd/%s.go", command.AbsolutePath, command.CmdName) goldenFile := fmt.Sprintf("testdata/%s.go.golden", command.CmdName) diff --git a/cobra/cmd/helpers.go b/cobra/cmd/helpers.go index cd94b3e3..d363d8c4 100644 --- a/cobra/cmd/helpers.go +++ b/cobra/cmd/helpers.go @@ -60,8 +60,10 @@ func init() { } func er(msg interface{}) { - fmt.Println("Error:", msg) - os.Exit(1) + if msg != nil { + fmt.Println("Error:", msg) + os.Exit(1) + } } // isEmpty checks if a given path is empty. diff --git a/cobra/cmd/init.go b/cobra/cmd/init.go index dcf5ada4..c982ea4d 100644 --- a/cobra/cmd/init.go +++ b/cobra/cmd/init.go @@ -74,5 +74,5 @@ Init will not use an existing directory with contents.`, func init() { initCmd.Flags().StringVar(&pkgName, "pkg-name", "", "fully qualified pkg name") - initCmd.MarkFlagRequired("pkg-name") + er(initCmd.MarkFlagRequired("pkg-name")) } diff --git a/cobra/cmd/init_test.go b/cobra/cmd/init_test.go index 8ee39106..2047f534 100644 --- a/cobra/cmd/init_test.go +++ b/cobra/cmd/init_test.go @@ -23,9 +23,7 @@ func TestGoldenInitCmd(t *testing.T) { project := getProject() defer os.RemoveAll(project.AbsolutePath) - if err := project.Create(); err != nil { - t.Fatal(err) - } + er(project.Create()) expectedFiles := []string{"LICENSE", "main.go", "cmd/root.go"} for _, f := range expectedFiles { diff --git a/cobra/cmd/licenses.go b/cobra/cmd/licenses.go index a070134d..bb304846 100644 --- a/cobra/cmd/licenses.go +++ b/cobra/cmd/licenses.go @@ -16,6 +16,7 @@ package cmd import ( + "fmt" "strings" "time" @@ -92,7 +93,7 @@ func copyrightLine() string { func findLicense(name string) License { found := matchLicense(name) if found == "" { - er("unknown license: " + name) + er(fmt.Errorf("unknown license: " + name)) } return Licenses[found] } diff --git a/cobra/cmd/project.go b/cobra/cmd/project.go index ecd783d0..304e9880 100644 --- a/cobra/cmd/project.go +++ b/cobra/cmd/project.go @@ -49,7 +49,7 @@ func (p *Project) Create() error { // create cmd/root.go if _, err = os.Stat(fmt.Sprintf("%s/cmd", p.AbsolutePath)); os.IsNotExist(err) { - os.Mkdir(fmt.Sprintf("%s/cmd", p.AbsolutePath), 0751) + er(os.Mkdir(fmt.Sprintf("%s/cmd", p.AbsolutePath), 0751)) } rootFile, err := os.Create(fmt.Sprintf("%s/cmd/root.go", p.AbsolutePath)) if err != nil { diff --git a/cobra/cmd/root.go b/cobra/cmd/root.go index 97f404bb..c2e180b9 100644 --- a/cobra/cmd/root.go +++ b/cobra/cmd/root.go @@ -47,8 +47,8 @@ func init() { rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) - viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) + er(viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author"))) + er(viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper"))) viper.SetDefault("author", "NAME HERE ") viper.SetDefault("license", "apache")