shithub: hugo

Download patch

ref: 7bc5e89fbaa5c613b8853ff7b69fae570bd0b56d
parent: fdf1d94ebc7d1aa4855c62237f2edbd4bdade1a7
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Apr 9 14:38:21 EDT 2018

commands: Make more commands non-global

See #4598

--- a/commands/benchmark.go
+++ b/commands/benchmark.go
@@ -25,10 +25,6 @@
 
 var _ cmder = (*benchmarkCmd)(nil)
 
-type cmder interface {
-	getCommand() *cobra.Command
-}
-
 type benchmarkCmd struct {
 	benchmarkTimes int
 	cpuProfileFile string
@@ -35,6 +31,10 @@
 	memProfileFile string
 
 	cmd *cobra.Command
+}
+
+type cmder interface {
+	getCommand() *cobra.Command
 }
 
 func (c *benchmarkCmd) getCommand() *cobra.Command {
--- a/commands/check.go
+++ b/commands/check.go
@@ -17,7 +17,20 @@
 	"github.com/spf13/cobra"
 )
 
-var checkCmd = &cobra.Command{
-	Use:   "check",
-	Short: "Contains some verification checks",
+var _ cmder = (*checkCmd)(nil)
+
+type checkCmd struct {
+	cmd *cobra.Command
+}
+
+func newCheckCmd() *checkCmd {
+	return &checkCmd{cmd: &cobra.Command{
+		Use:   "check",
+		Short: "Contains some verification checks",
+	},
+	}
+}
+
+func (c *checkCmd) getCommand() *cobra.Command {
+	return c.cmd
 }
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -197,7 +197,7 @@
 	HugoCmd.AddCommand(versionCmd)
 	HugoCmd.AddCommand(envCmd)
 	HugoCmd.AddCommand(configCmd)
-	HugoCmd.AddCommand(checkCmd)
+	HugoCmd.AddCommand(newCheckCmd().getCommand())
 	HugoCmd.AddCommand(newBenchmarkCmd().getCommand())
 	HugoCmd.AddCommand(convertCmd)
 	HugoCmd.AddCommand(newCmd)
--- a/commands/limit_darwin.go
+++ b/commands/limit_darwin.go
@@ -33,39 +33,54 @@
 	jww "github.com/spf13/jwalterweatherman"
 )
 
-func init() {
-	checkCmd.AddCommand(limit)
+var _ cmder = (*limitCmd)(nil)
+
+type limitCmd struct {
+	cmd *cobra.Command
 }
 
-var limit = &cobra.Command{
-	Use:   "ulimit",
-	Short: "Check system ulimit settings",
-	Long: `Hugo will inspect the current ulimit settings on the system.
+func newLimitCmd() *limitCmd {
+	ccmd := &cobra.Command{
+		Use:   "ulimit",
+		Short: "Check system ulimit settings",
+		Long: `Hugo will inspect the current ulimit settings on the system.
 This is primarily to ensure that Hugo can watch enough files on some OSs`,
-	RunE: func(cmd *cobra.Command, args []string) error {
-		var rLimit syscall.Rlimit
-		err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
-		if err != nil {
-			return newSystemError("Error Getting Rlimit ", err)
-		}
+		RunE: func(cmd *cobra.Command, args []string) error {
+			var rLimit syscall.Rlimit
+			err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
+			if err != nil {
+				return newSystemError("Error Getting Rlimit ", err)
+			}
 
-		jww.FEEDBACK.Println("Current rLimit:", rLimit)
+			jww.FEEDBACK.Println("Current rLimit:", rLimit)
 
-		jww.FEEDBACK.Println("Attempting to increase limit")
-		rLimit.Max = 999999
-		rLimit.Cur = 999999
-		err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
-		if err != nil {
-			return newSystemError("Error Setting rLimit ", err)
-		}
-		err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
-		if err != nil {
-			return newSystemError("Error Getting rLimit ", err)
-		}
-		jww.FEEDBACK.Println("rLimit after change:", rLimit)
+			jww.FEEDBACK.Println("Attempting to increase limit")
+			rLimit.Max = 999999
+			rLimit.Cur = 999999
+			err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
+			if err != nil {
+				return newSystemError("Error Setting rLimit ", err)
+			}
+			err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rLimit)
+			if err != nil {
+				return newSystemError("Error Getting rLimit ", err)
+			}
+			jww.FEEDBACK.Println("rLimit after change:", rLimit)
 
-		return nil
-	},
+			return nil
+		},
+	}
+
+	return &limitCmd{cmd: ccmd}
+}
+
+func (c *limitCmd) getCommand() *cobra.Command {
+	return c.cmd
+}
+
+func init() {
+	// TODO(bep) cli refactor
+	//checkCmdOld.AddCommand(limit)
 }
 
 func tweakLimit() {