commands: Remove the Hugo global
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 11 Apr 2018 06:39:39 +0000 (08:39 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 11 Apr 2018 07:50:19 +0000 (09:50 +0200)
There are still some cleaning to do, but that felt good.

See #4598

commands/commandeer.go
commands/commands_test.go
commands/hugo.go
commands/new.go
commands/server.go
main.go

index 9b6e51585ef70909fae43d343964d6708391078b..d43b7c9f13da234f8e4a33cd35f8fcd32beaa8be 100644 (file)
@@ -40,6 +40,8 @@ import (
 type commandeer struct {
        *deps.DepsCfg
 
+       hugo *hugolib.HugoSites
+
        h    *hugoBuilderCommon
        ftch flagsToConfigHandler
 
index 16381e64585d4f12a7e8fc44b67ff603da2652cb..4eab9b99f791c357c07e67a405c9303ab562a8cd 100644 (file)
@@ -50,8 +50,7 @@ func TestCommands(t *testing.T) {
                {[]string{"version"}, nil, ""},
                // no args = hugo build
                {nil, []string{sourceFlag}, ""},
-               // TODO(bep) cli refactor remove the HugoSites global and enable the below
-               //{nil, []string{sourceFlag, "--renderToMemory"},false},
+               {nil, []string{sourceFlag, "--renderToMemory"}, ""},
                {[]string{"benchmark"}, []string{sourceFlag, "-n=1"}, ""},
                {[]string{"convert", "toTOML"}, []string{sourceFlag, "-o=" + filepath.Join(dirOut, "toml")}, ""},
                {[]string{"convert", "toYAML"}, []string{sourceFlag, "-o=" + filepath.Join(dirOut, "yaml")}, ""},
index 2096071989414520f21668e585eeaa46907421dd..35b18ae9984e2405704d9a7f035fbfae1e3f3ed7 100644 (file)
@@ -51,15 +51,19 @@ import (
        jww "github.com/spf13/jwalterweatherman"
 )
 
+// TODO(bep) cli refactor consider a exported Hugo() method to fix the API
+
 // Hugo represents the Hugo sites to build. This variable is exported as it
 // is used by at least one external library (the Hugo caddy plugin). We should
 // provide a cleaner external API, but until then, this is it.
-var Hugo *hugolib.HugoSites
+// TODO(bep)  cli refactor remove this
+//var Hugo *hugolib.HugoSites
 
 // Reset resets Hugo ready for a new full build. This is mainly only useful
 // for benchmark testing etc. via the CLI commands.
+// TODO(bep) cli refactor check usage
 func Reset() error {
-       Hugo = nil
+       //Hugo = nil
        return nil
 }
 
@@ -259,16 +263,16 @@ func (c *commandeer) fullBuild() error {
                }
        }
 
-       for _, s := range Hugo.Sites {
+       for _, s := range c.hugo.Sites {
                s.ProcessingStats.Static = langCount[s.Language.Lang]
        }
 
        if c.h.gc {
-               count, err := Hugo.GC()
+               count, err := c.hugo.GC()
                if err != nil {
                        return err
                }
-               for _, s := range Hugo.Sites {
+               for _, s := range c.hugo.Sites {
                        // We have no way of knowing what site the garbage belonged to.
                        s.ProcessingStats.Cleaned = uint64(count)
                }
@@ -288,7 +292,7 @@ func (c *commandeer) build() error {
        // TODO(bep) Feedback?
        if !c.h.quiet {
                fmt.Println()
-               Hugo.PrintProcessingStats(os.Stdout)
+               c.hugo.PrintProcessingStats(os.Stdout)
                fmt.Println()
        }
 
@@ -322,7 +326,7 @@ func (c *commandeer) serverBuild() error {
        // TODO(bep) Feedback?
        if !c.h.quiet {
                fmt.Println()
-               Hugo.PrintProcessingStats(os.Stdout)
+               c.hugo.PrintProcessingStats(os.Stdout)
                fmt.Println()
        }
 
@@ -607,7 +611,7 @@ func (c *commandeer) recreateAndBuildSites(watching bool) (err error) {
        if !c.h.quiet {
                c.Logger.FEEDBACK.Println("Started building sites ...")
        }
-       return Hugo.Build(hugolib.BuildCfg{CreateSitesFromConfig: true})
+       return c.hugo.Build(hugolib.BuildCfg{CreateSitesFromConfig: true})
 }
 
 func (c *commandeer) resetAndBuildSites() (err error) {
@@ -617,21 +621,24 @@ func (c *commandeer) resetAndBuildSites() (err error) {
        if !c.h.quiet {
                c.Logger.FEEDBACK.Println("Started building sites ...")
        }
-       return Hugo.Build(hugolib.BuildCfg{ResetState: true})
+       return c.hugo.Build(hugolib.BuildCfg{ResetState: true})
 }
 
 func (c *commandeer) initSites() error {
-       if Hugo != nil {
-               Hugo.Cfg = c.Cfg
-               Hugo.Log.ResetLogCounters()
+       if c.hugo != nil {
+               // TODO(bep) cli refactor check
+               c.hugo.Cfg = c.Cfg
+               c.hugo.Log.ResetLogCounters()
                return nil
        }
+
        h, err := hugolib.NewHugoSites(*c.DepsCfg)
 
        if err != nil {
                return err
        }
-       Hugo = h
+
+       c.hugo = h
 
        return nil
 }
@@ -640,7 +647,7 @@ func (c *commandeer) buildSites() (err error) {
        if err := c.initSites(); err != nil {
                return err
        }
-       return Hugo.Build(hugolib.BuildCfg{})
+       return c.hugo.Build(hugolib.BuildCfg{})
 }
 
 func (c *commandeer) rebuildSites(events []fsnotify.Event) error {
@@ -664,7 +671,7 @@ func (c *commandeer) rebuildSites(events []fsnotify.Event) error {
                }
 
        }
-       return Hugo.Build(hugolib.BuildCfg{RecentlyVisited: visited}, events...)
+       return c.hugo.Build(hugolib.BuildCfg{RecentlyVisited: visited}, events...)
 }
 
 func (c *commandeer) fullRebuild() {
@@ -738,7 +745,7 @@ func (c *commandeer) newWatcher(dirList ...string) (*watcher.Batcher, error) {
                                        }
 
                                        // Check the most specific first, i.e. files.
-                                       contentMapped := Hugo.ContentChanges.GetSymbolicLinkMappings(ev.Name)
+                                       contentMapped := c.hugo.ContentChanges.GetSymbolicLinkMappings(ev.Name)
                                        if len(contentMapped) > 0 {
                                                for _, mapped := range contentMapped {
                                                        filtered = append(filtered, fsnotify.Event{Name: mapped, Op: ev.Op})
@@ -750,7 +757,7 @@ func (c *commandeer) newWatcher(dirList ...string) (*watcher.Batcher, error) {
 
                                        dir, name := filepath.Split(ev.Name)
 
-                                       contentMapped = Hugo.ContentChanges.GetSymbolicLinkMappings(dir)
+                                       contentMapped = c.hugo.ContentChanges.GetSymbolicLinkMappings(dir)
 
                                        if len(contentMapped) == 0 {
                                                filtered = append(filtered, ev)
@@ -888,7 +895,7 @@ func (c *commandeer) newWatcher(dirList ...string) (*watcher.Batcher, error) {
 
                                                if navigate {
                                                        if onePageName != "" {
-                                                               p = Hugo.GetContentPage(onePageName)
+                                                               p = c.hugo.GetContentPage(onePageName)
                                                        }
 
                                                }
index 851951ce91d76efa2f4c7507bf4b750bbf841ac0..c78c00bde15dc7a19b60391b59e61e02261d23fb 100644 (file)
@@ -109,15 +109,15 @@ func (n *newCmd) newContent(cmd *cobra.Command, args []string) error {
                        return nil, err
                }
 
-               if err := Hugo.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
+               if err := c.hugo.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
                        return nil, err
                }
 
-               s = Hugo.Sites[0]
+               s = c.hugo.Sites[0]
 
-               if len(Hugo.Sites) > 1 {
+               if len(c.hugo.Sites) > 1 {
                        // Find the best match.
-                       for _, ss := range Hugo.Sites {
+                       for _, ss := range c.hugo.Sites {
                                if strings.Contains(createPath, "."+ss.Language.Lang) {
                                        s = ss
                                        break
index 775aa402d294db95cec70844b44be0fbe515ddbe..6ede494175d9e9ec56a375069ef610211685caa4 100644 (file)
@@ -39,8 +39,6 @@ import (
 )
 
 type serverCmd struct {
-       hugoBuilderCommon
-
        disableLiveReload bool
        navigateToChanged bool
        renderToDisk      bool
@@ -53,13 +51,13 @@ type serverCmd struct {
 
        disableFastRender bool
 
-       *baseCmd
+       *baseBuilderCmd
 }
 
 func newServerCmd() *serverCmd {
        cc := &serverCmd{}
 
-       cc.baseCmd = newBaseCmd(&cobra.Command{
+       cc.baseBuilderCmd = newBuilderCmd(&cobra.Command{
                Use:     "server",
                Aliases: []string{"serve"},
                Short:   "A high performance webserver",
@@ -232,7 +230,7 @@ func (s *serverCmd) server(cmd *cobra.Command, args []string) error {
                return err
        }
 
-       for _, s := range Hugo.Sites {
+       for _, s := range c.hugo.Sites {
                s.RegisterMediaTypes()
        }
 
@@ -345,7 +343,7 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, string, string, erro
 // TODO(bep) cli refactor
 func (c *commandeer) serve(s *serverCmd) error {
 
-       isMultiHost := Hugo.IsMultihost()
+       isMultiHost := c.hugo.IsMultihost()
 
        var (
                baseURLs []string
@@ -353,12 +351,12 @@ func (c *commandeer) serve(s *serverCmd) error {
        )
 
        if isMultiHost {
-               for _, s := range Hugo.Sites {
+               for _, s := range c.hugo.Sites {
                        baseURLs = append(baseURLs, s.BaseURL.String())
                        roots = append(roots, s.Language.Lang)
                }
        } else {
-               s := Hugo.Sites[0]
+               s := c.hugo.Sites[0]
                baseURLs = []string{s.BaseURL.String()}
                roots = []string{""}
        }
diff --git a/main.go b/main.go
index e1c5b39f8498158f0c647e529719defc1ac7eb04..3baf6c275713fb06ae51800aae92094ace3351d2 100644 (file)
--- a/main.go
+++ b/main.go
@@ -31,9 +31,10 @@ func main() {
                os.Exit(-1)
        }
 
-       if commands.Hugo != nil {
+       // TODO(bep) cli refactor
+       /*if commands.Hugo != nil {
                if commands.Hugo.Log.LogCountForLevelsGreaterThanorEqualTo(jww.LevelError) > 0 {
                        os.Exit(-1)
                }
-       }
+       }*/
 }