mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-14 23:06:27 +03:00
cmd: Enhance CLI docs
This commit is contained in:
parent
d605ebe75a
commit
687a4b9e81
2 changed files with 91 additions and 11 deletions
91
cmd/cobra.go
91
cmd/cobra.go
|
@ -6,15 +6,98 @@ import (
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
var rootCmd = &cobra.Command{
|
||||||
Use: "caddy",
|
Use: "caddy",
|
||||||
|
Long: `Caddy is an extensible server platform written in Go.
|
||||||
|
|
||||||
|
At its core, Caddy merely manages configuration. Modules are plugged
|
||||||
|
in statically at compile-time to provide useful functionality. Caddy's
|
||||||
|
standard distribution includes common modules to serve HTTP, TLS,
|
||||||
|
and PKI applications, including the automation of certificates.
|
||||||
|
|
||||||
|
To run Caddy, use:
|
||||||
|
|
||||||
|
- 'caddy run' to run Caddy in the foreground (recommended).
|
||||||
|
- 'caddy start' to start Caddy in the background; only do this
|
||||||
|
if you will be keeping the terminal window open until you run
|
||||||
|
'caddy stop' to close the server.
|
||||||
|
|
||||||
|
When Caddy is started, it opens a locally-bound administrative socket
|
||||||
|
to which configuration can be POSTed via a restful HTTP API (see
|
||||||
|
https://caddyserver.com/docs/api).
|
||||||
|
|
||||||
|
Caddy's native configuration format is JSON. However, config adapters
|
||||||
|
can be used to convert other config formats to JSON when Caddy receives
|
||||||
|
its configuration. The Caddyfile is a built-in config adapter that is
|
||||||
|
popular for hand-written configurations due to its straightforward
|
||||||
|
syntax (see https://caddyserver.com/docs/caddyfile). Many third-party
|
||||||
|
adapters are available (see https://caddyserver.com/docs/config-adapters).
|
||||||
|
Use 'caddy adapt' to see how a config translates to JSON.
|
||||||
|
|
||||||
|
For convenience, the CLI can act as an HTTP client to give Caddy its
|
||||||
|
initial configuration for you. If a file named Caddyfile is in the
|
||||||
|
current working directory, it will do this automatically. Otherwise,
|
||||||
|
you can use the --config flag to specify the path to a config file.
|
||||||
|
|
||||||
|
Some special-purpose subcommands build and load a configuration file
|
||||||
|
for you directly from command line input; for example:
|
||||||
|
|
||||||
|
- caddy file-server
|
||||||
|
- caddy reverse-proxy
|
||||||
|
- caddy respond
|
||||||
|
|
||||||
|
These commands disable the administration endpoint because their
|
||||||
|
configuration is specified solely on the command line.
|
||||||
|
|
||||||
|
In general, the most common way to run Caddy is simply:
|
||||||
|
|
||||||
|
$ caddy run
|
||||||
|
|
||||||
|
Or, with a configuration file:
|
||||||
|
|
||||||
|
$ caddy run --config caddy.json
|
||||||
|
|
||||||
|
If running interactively in a terminal, running Caddy in the
|
||||||
|
background may be more convenient:
|
||||||
|
|
||||||
|
$ caddy start
|
||||||
|
...
|
||||||
|
$ caddy stop
|
||||||
|
|
||||||
|
This allows you to run other commands while Caddy stays running.
|
||||||
|
Be sure to stop Caddy before you close the terminal!
|
||||||
|
|
||||||
|
Depending on the system, Caddy may need permission to bind to low
|
||||||
|
ports. One way to do this on Linux is to use setcap:
|
||||||
|
|
||||||
|
$ sudo setcap cap_net_bind_service=+ep $(which caddy)
|
||||||
|
|
||||||
|
Remember to run that command again after replacing the binary.
|
||||||
|
|
||||||
|
See the Caddy website for tutorials, configuration structure,
|
||||||
|
syntax, and module documentation: https://caddyserver.com/docs/
|
||||||
|
|
||||||
|
Custom Caddy builds are available on the Caddy download page at:
|
||||||
|
https://caddyserver.com/download
|
||||||
|
|
||||||
|
The xcaddy command can be used to build Caddy from source with or
|
||||||
|
without additional plugins: https://github.com/caddyserver/xcaddy
|
||||||
|
|
||||||
|
Where possible, Caddy should be installed using officially-supported
|
||||||
|
package installers: https://caddyserver.com/docs/install
|
||||||
|
|
||||||
|
Instructions for running Caddy in production are also available:
|
||||||
|
https://caddyserver.com/docs/running
|
||||||
|
`,
|
||||||
|
Example: ` $ caddy run
|
||||||
|
$ caddy run --config caddy.json
|
||||||
|
$ caddy reload --config caddy.json
|
||||||
|
$ caddy stop`,
|
||||||
}
|
}
|
||||||
|
|
||||||
const docsHeader = "{{if not .HasParent}} Caddy is an extensible server platform.\n\n{{end}}"
|
|
||||||
const fullDocsFooter = `Full documentation is available at:
|
const fullDocsFooter = `Full documentation is available at:
|
||||||
https://caddyserver.com/docs/command-line
|
https://caddyserver.com/docs/command-line`
|
||||||
`
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
rootCmd.SetHelpTemplate(docsHeader + rootCmd.HelpTemplate() + "\n" + fullDocsFooter)
|
rootCmd.SetHelpTemplate(rootCmd.HelpTemplate() + "\n" + fullDocsFooter)
|
||||||
}
|
}
|
||||||
|
|
||||||
func caddyCmdToCoral(caddyCmd Command) *cobra.Command {
|
func caddyCmdToCoral(caddyCmd Command) *cobra.Command {
|
||||||
|
|
|
@ -358,25 +358,22 @@ EXPERIMENTAL: May be changed or removed.
|
||||||
}
|
}
|
||||||
if err := doc.GenManTree(rootCmd, &doc.GenManHeader{
|
if err := doc.GenManTree(rootCmd, &doc.GenManHeader{
|
||||||
Title: "Caddy",
|
Title: "Caddy",
|
||||||
Section: "8",
|
Section: "8", // https://en.wikipedia.org/wiki/Man_page#Manual_sections
|
||||||
}, dir); err != nil {
|
}, dir); err != nil {
|
||||||
return caddy.ExitCodeFailedQuit, err
|
return caddy.ExitCodeFailedQuit, err
|
||||||
}
|
}
|
||||||
return caddy.ExitCodeSuccess, nil
|
return caddy.ExitCodeSuccess, nil
|
||||||
},
|
},
|
||||||
Usage: "--directory <directory path>",
|
Usage: "--directory <path>",
|
||||||
Short: "Generates the manual pages of Caddy commands",
|
Short: "Generates the manual pages for Caddy commands",
|
||||||
Long: `
|
Long: `
|
||||||
Generates the manual pages of Caddy commands into the designated directory tagged into the specified section.
|
Generates the manual pages for Caddy commands into the designated directory tagged into section 8 (System Administration).
|
||||||
|
|
||||||
The manual page files are generated into the directory specified by the argument of --directory. If the directory does not exist, it will be created.
|
The manual page files are generated into the directory specified by the argument of --directory. If the directory does not exist, it will be created.
|
||||||
|
|
||||||
The manual pages are sorted into the section specified by the argument of --section.
|
|
||||||
`,
|
`,
|
||||||
Flags: func() *flag.FlagSet {
|
Flags: func() *flag.FlagSet {
|
||||||
fs := flag.NewFlagSet("manpage", flag.ExitOnError)
|
fs := flag.NewFlagSet("manpage", flag.ExitOnError)
|
||||||
fs.String("directory", "", "The output directory where the manpages are generated")
|
fs.String("directory", "", "The output directory where the manpages are generated")
|
||||||
fs.String("section", "", "The section number of the generated manual pages")
|
|
||||||
return fs
|
return fs
|
||||||
}(),
|
}(),
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue