Repository: caddyserver/caddy
File: cmd/commands.go (Go)

Code before:
Loads and provisions the provided config, but does not start running it.
This reveals any errors with the configuration through the loading and
provisioning stages.

If --envfile is specified, an environment file with environment variables in
the KEY=VALUE format will be loaded into the Caddy process.
`,
		CobraFunc: func(cmd *cobra.Command) {
			cmd.Flags().StringP("config", "c", "", "Input configuration file")
			cmd.Flags().StringP("adapter", "a", "", "Name of config adapter")
			cmd.Flags().StringP("envfile", "", "", "Environment file to load")
			cmd.RunE = WrapCommandFuncForCobra(cmdValidateConfig)
		},
	})

	RegisterCommand(Command{
		Name:  "storage",
		Short: "Commands for working with Caddy's storage",
		Long: `
Allows exporting and importing Caddy's storage contents. The two commands can be
combined in a pipeline to transfer directly from one storage to another:

$ caddy storage export --config Caddyfile.old --output - |
> caddy storage import --config Caddyfile.new --input -

With - referring to stdout/stdin.

NOTE: When importing to or exporting from file_system storage (the default), the command
should be run as the user that owns the associated root path.
`,
		CobraFunc: func(cmd *cobra.Command) {
			exportCmd := &cobra.Command{
				Use:   "export --config <path> --output <path>",
				Short: "Exports storage assets as a tarball",
				Long: `
The contents of the configured storage module (TLS certificates, autosave.json, etc) 
are exported via a tarball.

--output is required, - can be given for stdout. 
`,
				RunE: WrapCommandFuncForCobra(cmdExportStorage),
			}
			exportCmd.Flags().StringP("config", "c", "", "Input configuration file (required)")
			exportCmd.Flags().StringP("output", "o", "", "Output path")
			cmd.AddCommand(exportCmd)

			importCmd := &cobra.Command{
				Use:   "import --config <path> --input <path>",
				Short: "Imports storage assets from a tarball.",
				Long: `
Imports storage assets to the configured storage module. The import file must be

Review comment (suggestion):
```suggestion
The - argument refers to stdout and stdin, respectively.
```

Code after:
Loads and provisions the provided config, but does not start running it.
This reveals any errors with the configuration through the loading and
provisioning stages.

If --envfile is specified, an environment file with environment variables in
the KEY=VALUE format will be loaded into the Caddy process.
`,
		CobraFunc: func(cmd *cobra.Command) {
			cmd.Flags().StringP("config", "c", "", "Input configuration file")
			cmd.Flags().StringP("adapter", "a", "", "Name of config adapter")
			cmd.Flags().StringP("envfile", "", "", "Environment file to load")
			cmd.RunE = WrapCommandFuncForCobra(cmdValidateConfig)
		},
	})

	RegisterCommand(Command{
		Name:  "storage",
		Short: "Commands for working with Caddy's storage (EXPERIMENTAL)",
		Long: `
Allows exporting and importing Caddy's storage contents. The two commands can be
combined in a pipeline to transfer directly from one storage to another:

$ caddy storage export --config Caddyfile.old --output - |
> caddy storage import --config Caddyfile.new --input -

The - argument refers to stdout and stdin, respectively.

NOTE: When importing to or exporting from file_system storage (the default), the command
should be run as the user that owns the associated root path.

EXPERIMENTAL: May be changed or removed.
`,
		CobraFunc: func(cmd *cobra.Command) {
			exportCmd := &cobra.Command{
				Use:   "export --config <path> --output <path>",
				Short: "Exports storage assets as a tarball",
				Long: `
The contents of the configured storage module (TLS certificates, etc)
are exported via a tarball.

--output is required, - can be given for stdout.
`,
				RunE: WrapCommandFuncForCobra(cmdExportStorage),
			}
			exportCmd.Flags().StringP("config", "c", "", "Input configuration file (required)")
			exportCmd.Flags().StringP("output", "o", "", "Output path")
			cmd.AddCommand(exportCmd)

			importCmd := &cobra.Command{
				Use:   "import --config <path> --input <path>",
				Short: "Imports storage assets from a tarball.",