summaryrefslogtreecommitdiff
path: root/cmd/main.go
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2020-01-22 10:04:58 -0700
committerMatthew Holt <mholt@users.noreply.github.com>2020-01-22 10:04:58 -0700
commit6614d1c495f3266037d36b4c2f4f70fcc73acad1 (patch)
treed8734657bd1243bc80f970f16b6dc9c6c6982984 /cmd/main.go
parentc6bddbfbe25b2123a1b53a7a705283d68bc4109a (diff)
cmd: Emit error if reload cannot find a config to load
Diffstat (limited to 'cmd/main.go')
-rw-r--r--cmd/main.go22
1 files changed, 13 insertions, 9 deletions
diff --git a/cmd/main.go b/cmd/main.go
index 35f4210..1a3397e 100644
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -93,12 +93,16 @@ func handlePingbackConn(conn net.Conn, expect []byte) error {
// loadConfig loads the config from configFile and adapts it
// using adapterName. If adapterName is specified, configFile
-// must be also. It prints any warnings to stderr, and returns
-// the resulting JSON config bytes.
-func loadConfig(configFile, adapterName string) ([]byte, error) {
+// must be also. If no configFile is specified, it tries
+// loading a default config file. The lack of a config file is
+// not treated as an error, but false will be returned if
+// there is no config available. It prints any warnings to stderr,
+// and returns the resulting JSON config bytes along with
+// whether a config file was loaded or not.
+func loadConfig(configFile, adapterName string) ([]byte, bool, error) {
// specifying an adapter without a config file is ambiguous
if adapterName != "" && configFile == "" {
- return nil, fmt.Errorf("cannot adapt config without config file (use --config)")
+ return nil, false, fmt.Errorf("cannot adapt config without config file (use --config)")
}
// load initial config and adapter
@@ -108,7 +112,7 @@ func loadConfig(configFile, adapterName string) ([]byte, error) {
if configFile != "" {
config, err = ioutil.ReadFile(configFile)
if err != nil {
- return nil, fmt.Errorf("reading config file: %v", err)
+ return nil, false, fmt.Errorf("reading config file: %v", err)
}
caddy.Log().Info("using provided configuration",
zap.String("config_file", configFile),
@@ -125,7 +129,7 @@ func loadConfig(configFile, adapterName string) ([]byte, error) {
cfgAdapter = nil
} else if err != nil {
// default Caddyfile exists, but error reading it
- return nil, fmt.Errorf("reading default Caddyfile: %v", err)
+ return nil, false, fmt.Errorf("reading default Caddyfile: %v", err)
} else {
// success reading default Caddyfile
configFile = "Caddyfile"
@@ -147,7 +151,7 @@ func loadConfig(configFile, adapterName string) ([]byte, error) {
if adapterName != "" {
cfgAdapter = caddyconfig.GetAdapter(adapterName)
if cfgAdapter == nil {
- return nil, fmt.Errorf("unrecognized config adapter: %s", adapterName)
+ return nil, false, fmt.Errorf("unrecognized config adapter: %s", adapterName)
}
}
@@ -157,7 +161,7 @@ func loadConfig(configFile, adapterName string) ([]byte, error) {
"filename": configFile,
})
if err != nil {
- return nil, fmt.Errorf("adapting config using %s: %v", adapterName, err)
+ return nil, false, fmt.Errorf("adapting config using %s: %v", adapterName, err)
}
for _, warn := range warnings {
msg := warn.Message
@@ -169,7 +173,7 @@ func loadConfig(configFile, adapterName string) ([]byte, error) {
config = adaptedConfig
}
- return config, nil
+ return config, configFile != "", nil
}
// Flags wraps a FlagSet so that typed values