return more useful error if config file is missing

Signed-off-by: Joshua Rubin <jrubin@zvelo.com>
diff --git a/viper.go b/viper.go
index b53c26a..01471d9 100644
--- a/viper.go
+++ b/viper.go
@@ -197,16 +197,25 @@
 	override[key] = value
 }
 
-func ReadInConfig() {
+type UnsupportedConfigError string
+
+func (str UnsupportedConfigError) Error() string {
+	return fmt.Sprintf("Unsupported Config Type %q", string(str))
+}
+
+func ReadInConfig() error {
 	jww.INFO.Println("Attempting to read in config file")
 	if !stringInSlice(getConfigType(), SupportedExts) {
-		jww.ERROR.Fatalf("Unsupported Config Type %q", getConfigType())
+		return UnsupportedConfigError(getConfigType())
 	}
 
 	file, err := ioutil.ReadFile(getConfigFile())
-	if err == nil {
-		MarshallReader(bytes.NewReader(file))
+	if err != nil {
+		return err
 	}
+
+	MarshallReader(bytes.NewReader(file))
+	return nil
 }
 
 func MarshallReader(in io.Reader) {
@@ -276,12 +285,11 @@
 
 	cf, err := findConfigFile()
 	if err != nil {
-		jww.ERROR.Println(err)
-	} else {
-		configFile = cf
-		return getConfigFile()
+		return ""
 	}
-	return ""
+
+	configFile = cf
+	return getConfigFile()
 }
 
 func searchInPath(in string) (filename string) {