shithub: hugo

Download patch

ref: 4b780ca778ee7f25af808da38ede964a01698c70
parent: 7bc5e89fbaa5c613b8853ff7b69fae570bd0b56d
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Apr 9 14:49:13 EDT 2018

commands: Make convert command non-global

See #4598

--- a/commands/convert.go
+++ b/commands/convert.go
@@ -28,56 +28,67 @@
 	"github.com/spf13/cobra"
 )
 
+var (
+	_ cmder = (*convertCmd)(nil)
+)
+
 var outputDir string
 var unsafe bool
 
-var convertCmd = &cobra.Command{
-	Use:   "convert",
-	Short: "Convert your content to different formats",
-	Long: `Convert your content (e.g. front matter) to different formats.
+type convertCmd struct {
+	cmd *cobra.Command
+}
 
+func newConvertCmd() *convertCmd {
+	cmd := &cobra.Command{
+		Use:   "convert",
+		Short: "Convert your content to different formats",
+		Long: `Convert your content (e.g. front matter) to different formats.
+
 See convert's subcommands toJSON, toTOML and toYAML for more information.`,
-	RunE: nil,
-}
+		RunE: nil,
+	}
 
-var toJSONCmd = &cobra.Command{
-	Use:   "toJSON",
-	Short: "Convert front matter to JSON",
-	Long: `toJSON converts all front matter in the content directory
+	cmd.AddCommand(
+		&cobra.Command{
+			Use:   "toJSON",
+			Short: "Convert front matter to JSON",
+			Long: `toJSON converts all front matter in the content directory
 to use JSON for the front matter.`,
-	RunE: func(cmd *cobra.Command, args []string) error {
-		return convertContents(rune([]byte(parser.JSONLead)[0]))
-	},
-}
-
-var toTOMLCmd = &cobra.Command{
-	Use:   "toTOML",
-	Short: "Convert front matter to TOML",
-	Long: `toTOML converts all front matter in the content directory
+			RunE: func(cmd *cobra.Command, args []string) error {
+				return convertContents(rune([]byte(parser.JSONLead)[0]))
+			},
+		},
+		&cobra.Command{
+			Use:   "toTOML",
+			Short: "Convert front matter to TOML",
+			Long: `toTOML converts all front matter in the content directory
 to use TOML for the front matter.`,
-	RunE: func(cmd *cobra.Command, args []string) error {
-		return convertContents(rune([]byte(parser.TOMLLead)[0]))
-	},
-}
-
-var toYAMLCmd = &cobra.Command{
-	Use:   "toYAML",
-	Short: "Convert front matter to YAML",
-	Long: `toYAML converts all front matter in the content directory
+			RunE: func(cmd *cobra.Command, args []string) error {
+				return convertContents(rune([]byte(parser.TOMLLead)[0]))
+			},
+		},
+		&cobra.Command{
+			Use:   "toYAML",
+			Short: "Convert front matter to YAML",
+			Long: `toYAML converts all front matter in the content directory
 to use YAML for the front matter.`,
-	RunE: func(cmd *cobra.Command, args []string) error {
-		return convertContents(rune([]byte(parser.YAMLLead)[0]))
-	},
+			RunE: func(cmd *cobra.Command, args []string) error {
+				return convertContents(rune([]byte(parser.YAMLLead)[0]))
+			},
+		},
+	)
+
+	cmd.PersistentFlags().StringVarP(&outputDir, "output", "o", "", "filesystem path to write files to")
+	cmd.PersistentFlags().StringVarP(&source, "source", "s", "", "filesystem path to read files relative from")
+	cmd.PersistentFlags().BoolVar(&unsafe, "unsafe", false, "enable less safe operations, please backup first")
+	cmd.PersistentFlags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{})
+
+	return &convertCmd{cmd: cmd}
 }
 
-func init() {
-	convertCmd.AddCommand(toJSONCmd)
-	convertCmd.AddCommand(toTOMLCmd)
-	convertCmd.AddCommand(toYAMLCmd)
-	convertCmd.PersistentFlags().StringVarP(&outputDir, "output", "o", "", "filesystem path to write files to")
-	convertCmd.PersistentFlags().StringVarP(&source, "source", "s", "", "filesystem path to read files relative from")
-	convertCmd.PersistentFlags().BoolVar(&unsafe, "unsafe", false, "enable less safe operations, please backup first")
-	convertCmd.PersistentFlags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{})
+func (c *convertCmd) getCommand() *cobra.Command {
+	return c.cmd
 }
 
 func convertContents(mark rune) error {
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -199,7 +199,7 @@
 	HugoCmd.AddCommand(configCmd)
 	HugoCmd.AddCommand(newCheckCmd().getCommand())
 	HugoCmd.AddCommand(newBenchmarkCmd().getCommand())
-	HugoCmd.AddCommand(convertCmd)
+	HugoCmd.AddCommand(newConvertCmd().getCommand())
 	HugoCmd.AddCommand(newCmd)
 	HugoCmd.AddCommand(listCmd)
 	HugoCmd.AddCommand(importCmd)