summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-04-11 08:39:39 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-04-11 09:50:19 +0200
commitb110d0ae04e13fb45c739bcebb580709745082e6 (patch)
tree7db6bfde65008ec29bdc87746f3201c1615c8a13 /commands
parent73825cfc1c0b007830b24bb1947a565175b52d36 (diff)
commands: Remove the Hugo global
There are still some cleaning to do, but that felt good. See #4598
Diffstat (limited to 'commands')
-rw-r--r--commands/commandeer.go2
-rw-r--r--commands/commands_test.go3
-rw-r--r--commands/hugo.go43
-rw-r--r--commands/new.go8
-rw-r--r--commands/server.go14
5 files changed, 38 insertions, 32 deletions
diff --git a/commands/commandeer.go b/commands/commandeer.go
index 9b6e51585..d43b7c9f1 100644
--- a/commands/commandeer.go
+++ b/commands/commandeer.go
@@ -40,6 +40,8 @@ import (
type commandeer struct {
*deps.DepsCfg
+ hugo *hugolib.HugoSites
+
h *hugoBuilderCommon
ftch flagsToConfigHandler
diff --git a/commands/commands_test.go b/commands/commands_test.go
index 16381e645..4eab9b99f 100644
--- a/commands/commands_test.go
+++ b/commands/commands_test.go
@@ -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")}, ""},
diff --git a/commands/hugo.go b/commands/hugo.go
index 209607198..35b18ae99 100644
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -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)
}
}
diff --git a/commands/new.go b/commands/new.go
index 851951ce9..c78c00bde 100644
--- a/commands/new.go
+++ b/commands/new.go
@@ -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
diff --git a/commands/server.go b/commands/server.go
index 775aa402d..6ede49417 100644
--- a/commands/server.go
+++ b/commands/server.go
@@ -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{""}
}