diff --git a/cmd/diff.go b/cmd/diff.go index 27a32e707f656ec9e4c94b40be906357dcefcdd5..27dbbe418d661499fcdaea66eca08091f4c6408f 100644 --- a/cmd/diff.go +++ b/cmd/diff.go @@ -33,6 +33,8 @@ import ( const flagDiffStrategy = "diff-strategy" +var ErrDiffFound = fmt.Errorf("Differences found.") + func init() { diffCmd.PersistentFlags().String(flagDiffStrategy, "all", "Diff strategy, all or subset.") RootCmd.AddCommand(diffCmd) @@ -67,7 +69,7 @@ var diffCmd = &cobra.Command{ sort.Sort(utils.AlphabeticalOrder(objs)) - differencesFound := false + diffFound := false for _, obj := range objs { desc := fmt.Sprintf("%s/%s", obj.GetKind(), fqName(obj)) log.Debugf("Fetching ", desc) @@ -89,7 +91,7 @@ var diffCmd = &cobra.Command{ fmt.Fprintf(out, "- live %s\n+ config %s\n", desc, desc) if liveObj == nil { fmt.Fprintf(out, "%s doesn't exist on server\n", desc) - differencesFound = true + diffFound = true continue } @@ -100,7 +102,7 @@ var diffCmd = &cobra.Command{ diff := gojsondiff.New().CompareObjects(liveObjObject, obj.Object) if diff.Modified() { - differencesFound = true + diffFound = true fcfg := formatter.AsciiFormatterConfig{ Coloring: istty(out), } @@ -115,8 +117,8 @@ var diffCmd = &cobra.Command{ } } - if differencesFound { - return fmt.Errorf("Differences found.") + if diffFound { + return ErrDiffFound } return nil }, diff --git a/main.go b/main.go index 7940f2b85f353de046844408064229146025e023..9a12f9a6c8f4e436b4cc1f9ac568dd468fbaefa4 100644 --- a/main.go +++ b/main.go @@ -16,6 +16,8 @@ package main import ( + "os" + log "github.com/sirupsen/logrus" "github.com/ksonnet/kubecfg/cmd" @@ -32,7 +34,13 @@ func main() { // errors, like invalid command line flags. logFmt := cmd.NewLogFormatter(log.StandardLogger().Out) log.SetFormatter(logFmt) + log.Error(err.Error()) - log.Fatal(err.Error()) + switch err { + case cmd.ErrDiffFound: + os.Exit(1) + default: + os.Exit(2) + } } }