summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/benchmark.go2
-rw-r--r--commands/commandeer.go46
-rw-r--r--commands/convert.go19
-rw-r--r--commands/hugo.go326
-rw-r--r--commands/list.go19
-rw-r--r--commands/list_config.go10
-rw-r--r--commands/new.go19
-rw-r--r--commands/new_test.go24
-rw-r--r--commands/server.go38
-rw-r--r--commands/server_test.go8
-rw-r--r--config/configProvider.go (renamed from helpers/configProvider.go)37
-rw-r--r--create/content.go34
-rw-r--r--create/content_test.go43
-rw-r--r--deps/deps.go67
-rw-r--r--helpers/content.go74
-rw-r--r--helpers/content_renderer.go57
-rw-r--r--helpers/content_renderer_test.go34
-rw-r--r--helpers/content_test.go49
-rw-r--r--helpers/general.go5
-rw-r--r--helpers/language.go46
-rw-r--r--helpers/language_test.go7
-rw-r--r--helpers/path.go49
-rw-r--r--helpers/path_test.go44
-rw-r--r--helpers/pathspec.go54
-rw-r--r--helpers/pathspec_test.go38
-rw-r--r--helpers/pygments.go26
-rw-r--r--helpers/pygments_test.go19
-rw-r--r--helpers/testhelpers_test.go37
-rw-r--r--helpers/url.go7
-rw-r--r--helpers/url_test.go42
-rw-r--r--hugofs/fs.go25
-rw-r--r--hugofs/fs_test.go19
-rw-r--r--hugolib/alias_test.go27
-rw-r--r--hugolib/case_insensitive_test.go68
-rw-r--r--hugolib/config.go144
-rw-r--r--hugolib/config_test.go22
-rw-r--r--hugolib/datafiles_test.go103
-rw-r--r--hugolib/embedded_shortcodes_test.go282
-rw-r--r--hugolib/gitinfo.go7
-rw-r--r--hugolib/handler_page.go10
-rw-r--r--hugolib/handler_test.go16
-rw-r--r--hugolib/hugo_sites.go91
-rw-r--r--hugolib/hugo_sites_build.go4
-rw-r--r--hugolib/hugo_sites_build_test.go371
-rw-r--r--hugolib/i18n.go42
-rw-r--r--hugolib/menu_test.go96
-rw-r--r--hugolib/multilingual.go17
-rw-r--r--hugolib/node_as_page_test.go264
-rw-r--r--hugolib/page.go51
-rw-r--r--hugolib/pageCache_test.go8
-rw-r--r--hugolib/pageGroup_test.go44
-rw-r--r--hugolib/pageSort.go8
-rw-r--r--hugolib/pageSort_test.go56
-rw-r--r--hugolib/page_permalink_test.go68
-rw-r--r--hugolib/page_taxonomy_test.go4
-rw-r--r--hugolib/page_test.go200
-rw-r--r--hugolib/page_time_integration_test.go8
-rw-r--r--hugolib/pagesPrevNext_test.go17
-rw-r--r--hugolib/pagination.go10
-rw-r--r--hugolib/pagination_test.go377
-rw-r--r--hugolib/path_separators_test.go8
-rw-r--r--hugolib/path_separators_windows_test.go4
-rw-r--r--hugolib/permalinks_test.go10
-rw-r--r--hugolib/robotstxt_test.go19
-rw-r--r--hugolib/rss_test.go23
-rw-r--r--hugolib/scratch_test.go9
-rw-r--r--hugolib/shortcode.go35
-rw-r--r--hugolib/shortcode_test.go121
-rw-r--r--hugolib/shortcodeparser_test.go1
-rw-r--r--hugolib/site.go204
-rw-r--r--hugolib/siteJSONEncode_test.go7
-rw-r--r--hugolib/site_render.go23
-rw-r--r--hugolib/site_test.go227
-rw-r--r--hugolib/site_url_test.go31
-rw-r--r--hugolib/sitemap_test.go15
-rw-r--r--hugolib/taxonomy_test.go12
-rw-r--r--hugolib/template_engines_test.go14
-rw-r--r--hugolib/template_test.go39
-rw-r--r--hugolib/testhelpers_test.go66
-rw-r--r--i18n/i18n.go (renamed from tpl/template_i18n.go)68
-rw-r--r--i18n/i18n_test.go (renamed from tpl/template_i18n_test.go)40
-rw-r--r--i18n/translationProvider.go73
-rw-r--r--source/content_directory_test.go13
-rw-r--r--source/file.go27
-rw-r--r--source/file_test.go26
-rw-r--r--source/filesystem.go31
-rw-r--r--source/filesystem_test.go15
-rw-r--r--source/inmemory.go14
-rw-r--r--target/page_test.go3
-rw-r--r--tpl/template.go15
-rw-r--r--tpl/template_ast_transformers_test.go3
-rw-r--r--tpl/template_func_truncate_test.go1
-rw-r--r--tpl/template_funcs.go25
-rw-r--r--tpl/template_funcs_test.go167
-rw-r--r--tpl/template_resources.go40
-rw-r--r--tpl/template_resources_test.go54
-rw-r--r--tpl/template_test.go37
-rw-r--r--transform/livereloadinject.go31
-rw-r--r--transform/livereloadinject_test.go5
99 files changed, 2840 insertions, 2455 deletions
diff --git a/commands/benchmark.go b/commands/benchmark.go
index 42966c67a..4f9ab828b 100644
--- a/commands/benchmark.go
+++ b/commands/benchmark.go
@@ -54,7 +54,7 @@ func benchmark(cmd *cobra.Command, args []string) error {
return err
}
- c := commandeer{cfg}
+ c := newCommandeer(cfg)
var memProf *os.File
if memProfileFile != "" {
diff --git a/commands/commandeer.go b/commands/commandeer.go
new file mode 100644
index 000000000..e7fd70651
--- /dev/null
+++ b/commands/commandeer.go
@@ -0,0 +1,46 @@
+// Copyright 2017 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package commands
+
+import (
+ "github.com/spf13/hugo/deps"
+ "github.com/spf13/hugo/helpers"
+)
+
+type commandeer struct {
+ *deps.DepsCfg
+ pathSpec *helpers.PathSpec
+ configured bool
+}
+
+func (c *commandeer) Set(key string, value interface{}) {
+ if c.configured {
+ panic("commandeer cannot be changed")
+ }
+ c.Cfg.Set(key, value)
+}
+
+// PathSpec lazily creates a new PathSpec, as all the paths must
+// be configured before it is created.
+func (c *commandeer) PathSpec() *helpers.PathSpec {
+ c.configured = true
+ if c.pathSpec == nil {
+ c.pathSpec = helpers.NewPathSpec(c.Fs, c.Cfg)
+ }
+ return c.pathSpec
+}
+
+func newCommandeer(cfg *deps.DepsCfg) *commandeer {
+ return &commandeer{DepsCfg: cfg}
+}
diff --git a/commands/convert.go b/commands/convert.go
index 79c3c75e8..c24282550 100644
--- a/commands/convert.go
+++ b/commands/convert.go
@@ -21,11 +21,8 @@ import (
"github.com/spf13/cast"
"github.com/spf13/cobra"
- "github.com/spf13/hugo/helpers"
"github.com/spf13/hugo/hugolib"
"github.com/spf13/hugo/parser"
- jww "github.com/spf13/jwalterweatherman"
- "github.com/spf13/viper"
)
var outputDir string
@@ -86,7 +83,7 @@ func convertContents(mark rune) error {
return err
}
- h, err := hugolib.NewHugoSitesFromConfiguration(cfg)
+ h, err := hugolib.NewHugoSites(*cfg)
if err != nil {
return err
}
@@ -104,10 +101,10 @@ func convertContents(mark rune) error {
return errors.New("No source files found")
}
- contentDir := helpers.AbsPathify(viper.GetString("contentDir"))
- jww.FEEDBACK.Println("processing", len(site.Source.Files()), "content files")
+ contentDir := site.PathSpec.AbsPathify(site.Cfg.GetString("contentDir"))
+ site.Log.FEEDBACK.Println("processing", len(site.Source.Files()), "content files")
for _, file := range site.Source.Files() {
- jww.INFO.Println("Attempting to convert", file.LogicalName())
+ site.Log.INFO.Println("Attempting to convert", file.LogicalName())
page, err := site.NewPage(file.LogicalName())
if err != nil {
return err
@@ -115,12 +112,12 @@ func convertContents(mark rune) error {
psr, err := parser.ReadFrom(file.Contents)
if err != nil {
- jww.ERROR.Println("Error processing file:", file.Path())
+ site.Log.ERROR.Println("Error processing file:", file.Path())
return err
}
metadata, err := psr.Metadata()
if err != nil {
- jww.ERROR.Println("Error processing file:", file.Path())
+ site.Log.ERROR.Println("Error processing file:", file.Path())
return err
}
@@ -139,7 +136,7 @@ func convertContents(mark rune) error {
page.SetDir(filepath.Join(contentDir, file.Dir()))
page.SetSourceContent(psr.Content())
if err = page.SetSourceMetaData(metadata, mark); err != nil {
- jww.ERROR.Printf("Failed to set source metadata for file %q: %s. For more info see For more info see https://github.com/spf13/hugo/issues/2458", page.FullFilePath(), err)
+ site.Log.ERROR.Printf("Failed to set source metadata for file %q: %s. For more info see For more info see https://github.com/spf13/hugo/issues/2458", page.FullFilePath(), err)
continue
}
@@ -153,7 +150,7 @@ func convertContents(mark rune) error {
return fmt.Errorf("Failed to save file %q: %s", page.FullFilePath(), err)
}
} else {
- jww.FEEDBACK.Println("Unsafe operation not allowed, use --unsafe or set a different output path")
+ site.Log.FEEDBACK.Println("Unsafe operation not allowed, use --unsafe or set a different output path")
}
}
}
diff --git a/commands/hugo.go b/commands/hugo.go
index 566e68603..3e8351658 100644
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -27,8 +27,7 @@ import (
"sync"
"time"
- "github.com/spf13/hugo/tpl"
-
+ "github.com/spf13/hugo/config"
"github.com/spf13/hugo/hugofs"
"github.com/spf13/hugo/parser"
@@ -51,10 +50,6 @@ import (
"github.com/spf13/viper"
)
-type commandeer struct {
- deps.DepsCfg
-}
-
// 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.
@@ -64,7 +59,6 @@ var Hugo *hugolib.HugoSites
//