hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit e26a8b242a6434117d089a0799238add7025dbf4
parent 2a2c9838671b5401331d20f8c72e2b934fe34e8d
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Mon,  9 Apr 2018 20:42:08 +0200

commands: Make the list commands non-global

See #4598

Diffstat:
Mcommands/genchromastyles.go | 8++++++++
Mcommands/gendocshelper.go | 8++++++++
Mcommands/hugo.go | 6+++---
Mcommands/list.go | 229+++++++++++++++++++++++++++++++++++++++++--------------------------------------
4 files changed, 139 insertions(+), 112 deletions(-)
diff --git a/commands/genchromastyles.go b/commands/genchromastyles.go
@@ -22,6 +22,10 @@ import (
 	"github.com/spf13/cobra"
 )
 
+var (
+	_ cmder = (*genChromaStyles)(nil)
+)
+
 type genChromaStyles struct {
 	style          string
 	highlightStyle string
@@ -29,6 +33,10 @@ type genChromaStyles struct {
 	cmd            *cobra.Command
 }
 
+func (c *genChromaStyles) getCommand() *cobra.Command {
+	return c.cmd
+}
+
 // TODO(bep) highlight
 func createGenChromaStyles() *genChromaStyles {
 	g := &genChromaStyles{
diff --git a/commands/gendocshelper.go b/commands/gendocshelper.go
@@ -23,11 +23,19 @@ import (
 	"github.com/spf13/cobra"
 )
 
+var (
+	_ cmder = (*genDocsHelper)(nil)
+)
+
 type genDocsHelper struct {
 	target string
 	cmd    *cobra.Command
 }
 
+func (c *genDocsHelper) getCommand() *cobra.Command {
+	return c.cmd
+}
+
 func createGenDocsHelper() *genDocsHelper {
 	g := &genDocsHelper{
 		cmd: &cobra.Command{
diff --git a/commands/hugo.go b/commands/hugo.go
@@ -201,15 +201,15 @@ func AddCommands() {
 	HugoCmd.AddCommand(newBenchmarkCmd().getCommand())
 	HugoCmd.AddCommand(newConvertCmd().getCommand())
 	HugoCmd.AddCommand(newNewCmd().getCommand())
-	HugoCmd.AddCommand(listCmd)
+	HugoCmd.AddCommand(newListCmd().getCommand())
 	HugoCmd.AddCommand(newImportCmd().getCommand())
 
 	HugoCmd.AddCommand(genCmd)
 	genCmd.AddCommand(genautocompleteCmd)
 	genCmd.AddCommand(gendocCmd)
 	genCmd.AddCommand(genmanCmd)
-	genCmd.AddCommand(createGenDocsHelper().cmd)
-	genCmd.AddCommand(createGenChromaStyles().cmd)
+	genCmd.AddCommand(createGenDocsHelper().getCommand())
+	genCmd.AddCommand(createGenChromaStyles().getCommand())
 
 }
 
diff --git a/commands/list.go b/commands/list.go
@@ -21,129 +21,140 @@ import (
 	jww "github.com/spf13/jwalterweatherman"
 )
 
-func init() {
-	listCmd.AddCommand(listDraftsCmd)
-	listCmd.AddCommand(listFutureCmd)
-	listCmd.AddCommand(listExpiredCmd)
-	listCmd.PersistentFlags().StringVarP(&source, "source", "s", "", "filesystem path to read files relative from")
-	listCmd.PersistentFlags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{})
-}
-
-var listCmd = &cobra.Command{
-	Use:   "list",
-	Short: "Listing out various types of content",
-	Long: `Listing out various types of content.
+var _ cmder = (*listCmd)(nil)
 
-List requires a subcommand, e.g. ` + "`hugo list drafts`.",
-	RunE: nil,
+type listCmd struct {
+	cmd *cobra.Command
 }
 
-var listDraftsCmd = &cobra.Command{
-	Use:   "drafts",
-	Short: "List all drafts",
-	Long:  `List all of the drafts in your content directory.`,
-	RunE: func(cmd *cobra.Command, args []string) error {
-		cfgInit := func(c *commandeer) error {
-			c.Set("buildDrafts", true)
-			return nil
-		}
-		c, err := InitializeConfig(false, cfgInit)
-		if err != nil {
-			return err
-		}
-
-		sites, err := hugolib.NewHugoSites(*c.DepsCfg)
-
-		if err != nil {
-			return newSystemError("Error creating sites", err)
-		}
-
-		if err := sites.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
-			return newSystemError("Error Processing Source Content", err)
-		}
-
-		for _, p := range sites.Pages() {
-			if p.IsDraft() {
-				jww.FEEDBACK.Println(filepath.Join(p.File.Dir(), p.File.LogicalName()))
-			}
-
-		}
-
-		return nil
-
-	},
+func (c *listCmd) getCommand() *cobra.Command {
+	return c.cmd
 }
 
-var listFutureCmd = &cobra.Command{
-	Use:   "future",
-	Short: "List all posts dated in the future",
-	Long: `List all of the posts in your content directory which will be
-posted in the future.`,
-	RunE: func(cmd *cobra.Command, args []string) error {
-		cfgInit := func(c *commandeer) error {
-			c.Set("buildFuture", true)
-			return nil
-		}
-		c, err := InitializeConfig(false, cfgInit)
-		if err != nil {
-			return err
-		}
-
-		sites, err := hugolib.NewHugoSites(*c.DepsCfg)
-
-		if err != nil {
-			return newSystemError("Error creating sites", err)
-		}
-
-		if err := sites.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
-			return newSystemError("Error Processing Source Content", err)
-		}
-
-		for _, p := range sites.Pages() {
-			if p.IsFuture() {
-				jww.FEEDBACK.Println(filepath.Join(p.File.Dir(), p.File.LogicalName()))
-			}
+func newListCmd() *listCmd {
+	cc := &listCmd{}
 
-		}
+	cc.cmd = &cobra.Command{
+		Use:   "list",
+		Short: "Listing out various types of content",
+		Long: `Listing out various types of content.
 
-		return nil
+List requires a subcommand, e.g. ` + "`hugo list drafts`.",
+		RunE: nil,
+	}
+
+	cc.cmd.AddCommand(
+		&cobra.Command{
+			Use:   "drafts",
+			Short: "List all drafts",
+			Long:  `List all of the drafts in your content directory.`,
+			RunE: func(cmd *cobra.Command, args []string) error {
+				cfgInit := func(c *commandeer) error {
+					c.Set("buildDrafts", true)
+					return nil
+				}
+				c, err := InitializeConfig(false, cfgInit)
+				if err != nil {
+					return err
+				}
+
+				sites, err := hugolib.NewHugoSites(*c.DepsCfg)
+
+				if err != nil {
+					return newSystemError("Error creating sites", err)
+				}
+
+				if err := sites.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
+					return newSystemError("Error Processing Source Content", err)
+				}
+
+				for _, p := range sites.Pages() {
+					if p.IsDraft() {
+						jww.FEEDBACK.Println(filepath.Join(p.File.Dir(), p.File.LogicalName()))
+					}
+
+				}
+
+				return nil
+
+			},
+		},
+		&cobra.Command{
+			Use:   "future",
+			Short: "List all posts dated in the future",
+			Long: `List all of the posts in your content directory which will be
+posted in the future.`,
+			RunE: func(cmd *cobra.Command, args []string) error {
+				cfgInit := func(c *commandeer) error {
+					c.Set("buildFuture", true)
+					return nil
+				}
+				c, err := InitializeConfig(false, cfgInit)
+				if err != nil {
+					return err
+				}
+
+				sites, err := hugolib.NewHugoSites(*c.DepsCfg)
+
+				if err != nil {
+					return newSystemError("Error creating sites", err)
+				}
+
+				if err := sites.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
+					return newSystemError("Error Processing Source Content", err)
+				}
+
+				for _, p := range sites.Pages() {
+					if p.IsFuture() {
+						jww.FEEDBACK.Println(filepath.Join(p.File.Dir(), p.File.LogicalName()))
+					}
+
+				}
+
+				return nil
+
+			},
+		},
+		&cobra.Command{
+			Use:   "expired",
+			Short: "List all posts already expired",
+			Long: `List all of the posts in your content directory which has already
+expired.`,
+			RunE: func(cmd *cobra.Command, args []string) error {
+				cfgInit := func(c *commandeer) error {
+					c.Set("buildExpired", true)
+					return nil
+				}
+				c, err := InitializeConfig(false, cfgInit)
+				if err != nil {
+					return err
+				}
 
-	},
-}
+				sites, err := hugolib.NewHugoSites(*c.DepsCfg)
 
-var listExpiredCmd = &cobra.Command{
-	Use:   "expired",
-	Short: "List all posts already expired",
-	Long: `List all of the posts in your content directory which has already
-expired.`,
-	RunE: func(cmd *cobra.Command, args []string) error {
-		cfgInit := func(c *commandeer) error {
-			c.Set("buildExpired", true)
-			return nil
-		}
-		c, err := InitializeConfig(false, cfgInit)
-		if err != nil {
-			return err
-		}
+				if err != nil {
+					return newSystemError("Error creating sites", err)
+				}
 
-		sites, err := hugolib.NewHugoSites(*c.DepsCfg)
+				if err := sites.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
+					return newSystemError("Error Processing Source Content", err)
+				}
 
-		if err != nil {
-			return newSystemError("Error creating sites", err)
-		}
+				for _, p := range sites.Pages() {
+					if p.IsExpired() {
+						jww.FEEDBACK.Println(filepath.Join(p.File.Dir(), p.File.LogicalName()))
+					}
 
-		if err := sites.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
-			return newSystemError("Error Processing Source Content", err)
-		}
+				}
 
-		for _, p := range sites.Pages() {
-			if p.IsExpired() {
-				jww.FEEDBACK.Println(filepath.Join(p.File.Dir(), p.File.LogicalName()))
-			}
+				return nil
 
-		}
+			},
+		},
+	)
 
-		return nil
+	cc.cmd.PersistentFlags().StringVarP(&source, "source", "s", "", "filesystem path to read files relative from")
+	cc.cmd.PersistentFlags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{})
 
-	},
+	return cc
 }