summaryrefslogtreecommitdiff
path: root/cmd/commandfuncs.go
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2020-03-22 22:58:24 -0600
committerMatthew Holt <mholt@users.noreply.github.com>2020-03-22 22:58:33 -0600
commit6e2fabb2a46812dee42842c13439e1a0238aa40b (patch)
treeb4991c00ae7e8efc470ab36213d2e5ddd2f8559a /cmd/commandfuncs.go
parent8cc60e6896b7c030891a3578ae2405a14b2fed49 (diff)
cmd: Add --watch flag to start & run commands (closes #1806)
Because, just for fun.
Diffstat (limited to 'cmd/commandfuncs.go')
-rw-r--r--cmd/commandfuncs.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/cmd/commandfuncs.go b/cmd/commandfuncs.go
index 65c02d8..e76d7f1 100644
--- a/cmd/commandfuncs.go
+++ b/cmd/commandfuncs.go
@@ -42,6 +42,7 @@ import (
func cmdStart(fl Flags) (int, error) {
startCmdConfigFlag := fl.String("config")
startCmdConfigAdapterFlag := fl.String("adapter")
+ startCmdWatchFlag := fl.Bool("watch")
// open a listener to which the child process will connect when
// it is ready to confirm that it has successfully started
@@ -68,6 +69,9 @@ func cmdStart(fl Flags) (int, error) {
if startCmdConfigAdapterFlag != "" {
cmd.Args = append(cmd.Args, "--adapter", startCmdConfigAdapterFlag)
}
+ if startCmdWatchFlag {
+ cmd.Args = append(cmd.Args, "--watch")
+ }
stdinpipe, err := cmd.StdinPipe()
if err != nil {
return caddy.ExitCodeFailedStartup,
@@ -145,6 +149,7 @@ func cmdRun(fl Flags) (int, error) {
runCmdConfigAdapterFlag := fl.String("adapter")
runCmdResumeFlag := fl.Bool("resume")
runCmdPrintEnvFlag := fl.Bool("environ")
+ runCmdWatchFlag := fl.Bool("watch")
runCmdPingbackFlag := fl.String("pingback")
// if we are supposed to print the environment, do that first
@@ -171,8 +176,9 @@ func cmdRun(fl Flags) (int, error) {
}
}
// we don't use 'else' here since this value might have been changed in 'if' block; i.e. not mutually exclusive
+ var configFile string
if !runCmdResumeFlag {
- config, _, err = loadConfig(runCmdConfigFlag, runCmdConfigAdapterFlag)
+ config, configFile, err = loadConfig(runCmdConfigFlag, runCmdConfigAdapterFlag)
if err != nil {
return caddy.ExitCodeFailedStartup, err
}
@@ -211,6 +217,12 @@ func cmdRun(fl Flags) (int, error) {
}
}
+ // if enabled, reload config file automatically on changes
+ // (this better only be used in dev!)
+ if runCmdWatchFlag {
+ go watchConfigFile(configFile, runCmdConfigAdapterFlag)
+ }
+
// warn if the environment does not provide enough information about the disk
hasXDG := os.Getenv("XDG_DATA_HOME") != "" &&
os.Getenv("XDG_CONFIG_HOME") != "" &&
@@ -266,11 +278,11 @@ func cmdReload(fl Flags) (int, error) {
reloadCmdAddrFlag := fl.String("address")
// get the config in caddy's native format
- config, hasConfig, err := loadConfig(reloadCmdConfigFlag, reloadCmdConfigAdapterFlag)
+ config, configFile, err := loadConfig(reloadCmdConfigFlag, reloadCmdConfigAdapterFlag)
if err != nil {
return caddy.ExitCodeFailedStartup, err
}
- if !hasConfig {
+ if configFile == "" {
return caddy.ExitCodeFailedStartup, fmt.Errorf("no config file to load")
}