]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
commands: Move the --format flag to only the commands that support it
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 27 May 2023 13:04:36 +0000 (15:04 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 27 May 2023 14:56:54 +0000 (16:56 +0200)
Fixes #11022

commands/commandeer.go
commands/config.go
commands/new.go

index 08f959579b0883d6c4c346861ab0f60c8801941c..7b0c416522ebb67e77090720c5983903ff7bf0a4 100644 (file)
@@ -108,9 +108,6 @@ type rootCommand struct {
        buildWatch  bool
        environment string
 
-       // File format to read or write (TOML, YAML, JSON).
-       format string
-
        // Common build flags.
        baseURL              string
        gc                   bool
@@ -408,12 +405,6 @@ func (r *rootCommand) PreRun(cd, runner *simplecobra.Commandeer) error {
        if err != nil {
                return err
        }
-       switch r.format {
-       case "json", "toml", "yaml":
-               // OK
-       default:
-               return fmt.Errorf("unsupported format %q; must be one of json, toml or yaml", r.format)
-       }
 
        loggers.PanicOnWarning.Store(r.panicOnWarning)
        r.commonConfigs = lazycache.New[int32, *commonConfig](lazycache.Options{MaxEntries: 5})
@@ -485,7 +476,6 @@ Complete documentation is available at https://gohugo.io/.`
 
        // Configure persistent flags
        cmd.PersistentFlags().StringVarP(&r.source, "source", "s", "", "filesystem path to read files relative from")
-       cmd.PersistentFlags().StringVar(&r.format, "format", "toml", "preferred file format (toml, yaml or json)")
        cmd.PersistentFlags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{})
        cmd.PersistentFlags().StringP("destination", "d", "", "filesystem path to write files to")
        cmd.PersistentFlags().SetAnnotation("destination", cobra.BashCompSubdirsInDir, []string{})
index ce3ad04fa748d34990b9771cd8b493de59a11f94..5cbcdff2ae0005fd776b3b773975af9f0882793f 100644 (file)
@@ -17,6 +17,7 @@ import (
        "bytes"
        "context"
        "encoding/json"
+       "fmt"
        "os"
        "strings"
        "time"
@@ -40,6 +41,8 @@ func newConfigCommand() *configCommand {
 type configCommand struct {
        r *rootCommand
 
+       format string
+
        commands []simplecobra.Commander
 }
 
@@ -67,7 +70,7 @@ func (c *configCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, arg
                return err
        }
 
-       format := strings.ToLower(c.r.format)
+       format := strings.ToLower(c.format)
 
        switch format {
        case "json":
@@ -83,6 +86,8 @@ func (c *configCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, arg
                        return parser.InterfaceToConfig(m, metadecoders.YAML, os.Stdout)
                case "toml":
                        return parser.InterfaceToConfig(m, metadecoders.TOML, os.Stdout)
+               default:
+                       return fmt.Errorf("unsupported format: %q", format)
                }
        }
 
@@ -93,6 +98,8 @@ func (c *configCommand) Init(cd *simplecobra.Commandeer) error {
        cmd := cd.CobraCommand
        cmd.Short = "Print the site configuration"
        cmd.Long = `Print the site configuration, both default and custom settings.`
+       cmd.Flags().StringVar(&c.format, "format", "toml", "preferred file format (toml, yaml or json)")
+
        return nil
 }
 
index 8a2b0229348eb3e8a75b85b0299e4647943d5c0f..d021be0274a30a59f5a92b09bb0c5e080b068e14 100644 (file)
@@ -36,6 +36,7 @@ func newNewCommand() *newCommand {
        var (
                force       bool
                contentType string
+               format      string
        )
 
        var c *newCommand
@@ -67,6 +68,8 @@ func newNewCommand() *newCommand {
                                        cmd.Flags().StringVarP(&contentType, "kind", "k", "", "content type to create")
                                        cmd.Flags().String("editor", "", "edit new content with this editor, if provided")
                                        cmd.Flags().BoolVarP(&force, "force", "f", false, "overwrite file if it already exists")
+                                       cmd.Flags().StringVar(&format, "format", "toml", "preferred file format (toml, yaml or json)")
+
                                },
                        },
                        &simpleCommand{
@@ -118,7 +121,7 @@ Use ` + "`hugo new [contentPath]`" + ` to create new content.`,
                                                        return errors.New(createpath + " already exists and is not empty. See --force.")
 
                                                case !isEmpty && force:
-                                                       all := append(dirs, filepath.Join(createpath, "hugo."+r.format))
+                                                       all := append(dirs, filepath.Join(createpath, "hugo."+format))
                                                        for _, path := range all {
                                                                if exists, _ := helpers.Exists(path, sourceFs); exists {
                                                                        return errors.New(path + " already exists")
@@ -133,7 +136,7 @@ Use ` + "`hugo new [contentPath]`" + ` to create new content.`,
                                                }
                                        }
 
-                                       c.newSiteCreateConfig(sourceFs, createpath, r.format)
+                                       c.newSiteCreateConfig(sourceFs, createpath, format)
 
                                        // Create a default archetype file.
                                        helpers.SafeWriteToDisk(filepath.Join(archeTypePath, "default.md"),