diff --git a/cmd/commandfuncs.go b/cmd/commandfuncs.go index a10bc191..772fe012 100644 --- a/cmd/commandfuncs.go +++ b/cmd/commandfuncs.go @@ -533,7 +533,17 @@ func cmdFmt(fl Flags) (int, error) { if formatCmdConfigFile == "" { formatCmdConfigFile = "Caddyfile" } - overwrite := fl.Bool("overwrite") + + // as a special case, read from stdin if the file name is "-" + if formatCmdConfigFile == "-" { + input, err := ioutil.ReadAll(os.Stdin) + if err != nil { + return caddy.ExitCodeFailedStartup, + fmt.Errorf("reading stdin: %v", err) + } + fmt.Print(string(caddyfile.Format(input))) + return caddy.ExitCodeSuccess, nil + } input, err := ioutil.ReadFile(formatCmdConfigFile) if err != nil { @@ -543,9 +553,8 @@ func cmdFmt(fl Flags) (int, error) { output := caddyfile.Format(input) - if overwrite { - err = ioutil.WriteFile(formatCmdConfigFile, output, 0644) - if err != nil { + if fl.Bool("overwrite") { + if err := ioutil.WriteFile(formatCmdConfigFile, output, 0600); err != nil { return caddy.ExitCodeFailedStartup, nil } } else { diff --git a/cmd/commands.go b/cmd/commands.go index 99d5245c..ea8402d9 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -263,8 +263,12 @@ provisioning stages.`, Formats the Caddyfile by adding proper indentation and spaces to improve human readability. It prints the result to stdout. -If --write is specified, the output will be written to the config file -directly instead of printing it.`, +If --overwrite is specified, the output will be written to the config file +directly instead of printing it. + +If you wish you use stdin instead of a regular file, use - as the path. +When reading from stdin, the --overwrite flag has no effect: the result +is always printed to stdout.`, Flags: func() *flag.FlagSet { fs := flag.NewFlagSet("format", flag.ExitOnError) fs.Bool("overwrite", false, "Overwrite the input file with the results")