From 3fba5f4dacae39d808fd223d3ab8b041e878d023 Mon Sep 17 00:00:00 2001
From: Abubakr-Sadik Nii Nai Davis <dwa2pac@gmail.com>
Date: Thu, 22 Aug 2019 12:43:09 +0000
Subject: [PATCH] Fix version command failing because of missing config file it
 does not need. (#377)

* Fix version command failing because of missing config file it does
not need.

* Fix typo

* Remove reference to github issue in comment
---
 cmd/common.go |  6 ++++++
 cmd/root.go   | 12 ++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/cmd/common.go b/cmd/common.go
index bedc856..bc4b272 100644
--- a/cmd/common.go
+++ b/cmd/common.go
@@ -65,6 +65,12 @@ func NewRunFilter(opts FilterOpts) (check.Predicate, error) {
 func runChecks(nodetype check.NodeType) {
 	var summary check.Summary
 
+	// Verify config file was loaded into Viper during Cobra sub-command initialization.
+	if configFileError != nil {
+		colorPrint(check.FAIL, fmt.Sprintf("Failed to read config file: %v\n", configFileError))
+		os.Exit(1)
+	}
+
 	def := loadConfig(nodetype)
 	in, err := ioutil.ReadFile(def)
 	if err != nil {
diff --git a/cmd/root.go b/cmd/root.go
index 04011f8..ad11f82 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -49,6 +49,7 @@ var (
 	filterOpts         FilterOpts
 	includeTestOutput  bool
 	outputFile         string
+	configFileError    error
 )
 
 // RootCmd represents the base command when called without any subcommands
@@ -134,7 +135,14 @@ func initConfig() {
 
 	// If a config file is found, read it in.
 	if err := viper.ReadInConfig(); err != nil {
-		colorPrint(check.FAIL, fmt.Sprintf("Failed to read config file: %v\n", err))
-		os.Exit(1)
+		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
+			// Config file not found; ignore error for now to prevent commands
+			// which don't need the config file exiting.
+			configFileError = err
+		} else {
+			// Config file was found but another error was produced
+			colorPrint(check.FAIL, fmt.Sprintf("Failed to read config file: %v\n", err))
+			os.Exit(1)
+		}
 	}
 }
-- 
GitLab