summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorY.Horie <u5.horie@gmail.com>2023-01-22 13:28:37 +0900
committerGitHub <noreply@github.com>2023-01-21 21:28:37 -0700
commit5805b3ca11492c2673180e707a643b24100a9e4a (patch)
tree090c20205e5576ebb3d32ab66531dd583d84eeba
parentd6d7511699f6a35e3246918023af5ba3bc2cbc67 (diff)
cmd: `caddy fmt` return code is 1 if not formatted (#5297)
* cmd: Fix caddy fmt if input isn't formatted * Fixes #5294 * return exit 1 with an error message * cmd: Use formattingDifference for caddy fmt * #5294 * expose caddyfile.formattingDifference
-rw-r--r--caddyconfig/caddyfile/adapter.go6
-rw-r--r--cmd/commandfuncs.go4
2 files changed, 7 insertions, 3 deletions
diff --git a/caddyconfig/caddyfile/adapter.go b/caddyconfig/caddyfile/adapter.go
index d5bb7c2..b924325 100644
--- a/caddyconfig/caddyfile/adapter.go
+++ b/caddyconfig/caddyfile/adapter.go
@@ -54,7 +54,7 @@ func (a Adapter) Adapt(body []byte, options map[string]any) ([]byte, []caddyconf
// lint check: see if input was properly formatted; sometimes messy files files parse
// successfully but result in logical errors (the Caddyfile is a bad format, I'm sorry)
- if warning, different := formattingDifference(filename, body); different {
+ if warning, different := FormattingDifference(filename, body); different {
warnings = append(warnings, warning)
}
@@ -63,10 +63,10 @@ func (a Adapter) Adapt(body []byte, options map[string]any) ([]byte, []caddyconf
return result, warnings, err
}
-// formattingDifference returns a warning and true if the formatted version
+// FormattingDifference returns a warning and true if the formatted version
// is any different from the input; empty warning and false otherwise.
// TODO: also perform this check on imported files
-func formattingDifference(filename string, body []byte) (caddyconfig.Warning, bool) {
+func FormattingDifference(filename string, body []byte) (caddyconfig.Warning, bool) {
// replace windows-style newlines to normalize comparison
normalizedBody := bytes.Replace(body, []byte("\r\n"), []byte("\n"), -1)
diff --git a/cmd/commandfuncs.go b/cmd/commandfuncs.go
index e3daae5..bc4c227 100644
--- a/cmd/commandfuncs.go
+++ b/cmd/commandfuncs.go
@@ -576,6 +576,10 @@ func cmdFmt(fl Flags) (int, error) {
fmt.Print(string(output))
}
+ if warning, diff := caddyfile.FormattingDifference(formatCmdConfigFile, input); diff {
+ return caddy.ExitCodeFailedStartup, fmt.Errorf("%s:%d: Caddyfile input is not formatted", warning.File, warning.Line)
+ }
+
return caddy.ExitCodeSuccess, nil
}