Skip to content

Commit

Permalink
Add support for theme composition and inheritance
Browse files Browse the repository at this point in the history
  • Loading branch information
bep committed Jun 10, 2018
1 parent 6464981 commit a1e92be
Show file tree
Hide file tree
Showing 86 changed files with 2,787 additions and 1,910 deletions.
6 changes: 3 additions & 3 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Gopkg.toml
Expand Up @@ -78,7 +78,7 @@

[[constraint]]
name = "github.com/spf13/afero"
version = "^1.1.0"
branch = "master"

[[constraint]]
name = "github.com/spf13/cast"
Expand Down
2 changes: 1 addition & 1 deletion commands/benchmark.go
Expand Up @@ -56,7 +56,7 @@ func (c *benchmarkCmd) benchmark(cmd *cobra.Command, args []string) error {
return nil
}

comm, err := initializeConfig(false, &c.hugoBuilderCommon, c, cfgInit)
comm, err := initializeConfig(true, false, &c.hugoBuilderCommon, c, cfgInit)
if err != nil {
return err
}
Expand Down
52 changes: 23 additions & 29 deletions commands/commandeer.go
Expand Up @@ -34,7 +34,7 @@ import (
"github.com/gohugoio/hugo/deps"
"github.com/gohugoio/hugo/helpers"
"github.com/gohugoio/hugo/hugofs"
src "github.com/gohugoio/hugo/source"
"github.com/gohugoio/hugo/langs"
)

type commandeer struct {
Expand All @@ -45,11 +45,8 @@ type commandeer struct {
h *hugoBuilderCommon
ftch flagsToConfigHandler

pathSpec *helpers.PathSpec
visitedURLs *types.EvictingStringQueue

staticDirsConfig []*src.Dirs

// We watch these for changes.
configFiles []string

Expand All @@ -63,7 +60,7 @@ type commandeer struct {

serverPorts []int
languagesConfigured bool
languages helpers.Languages
languages langs.Languages

configured bool
}
Expand All @@ -75,31 +72,13 @@ func (c *commandeer) Set(key string, value interface{}) {
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
return c.pathSpec
}

func (c *commandeer) initFs(fs *hugofs.Fs) error {
c.DepsCfg.Fs = fs
ps, err := helpers.NewPathSpec(fs, c.Cfg)
if err != nil {
return err
}
c.pathSpec = ps

dirsConfig, err := c.createStaticDirsConfig()
if err != nil {
return err
}
c.staticDirsConfig = dirsConfig

return nil
}

func newCommandeer(running bool, h *hugoBuilderCommon, f flagsToConfigHandler, doWithCommandeer func(c *commandeer) error, subCmdVs ...*cobra.Command) (*commandeer, error) {
func newCommandeer(mustHaveConfigFile, running bool, h *hugoBuilderCommon, f flagsToConfigHandler, doWithCommandeer func(c *commandeer) error, subCmdVs ...*cobra.Command) (*commandeer, error) {

var rebuildDebouncer func(f func())
if running {
Expand All @@ -117,10 +96,10 @@ func newCommandeer(running bool, h *hugoBuilderCommon, f flagsToConfigHandler, d
debounce: rebuildDebouncer,
}

return c, c.loadConfig(running)
return c, c.loadConfig(mustHaveConfigFile, running)
}

func (c *commandeer) loadConfig(running bool) error {
func (c *commandeer) loadConfig(mustHaveConfigFile, running bool) error {

if c.DepsCfg == nil {
c.DepsCfg = &deps.DepsCfg{}
Expand Down Expand Up @@ -168,12 +147,18 @@ func (c *commandeer) loadConfig(running bool) error {
doWithConfig)

if err != nil {
return err
if mustHaveConfigFile {
return err
}
if err != hugolib.ErrNoConfigFile {
return err
}

}

c.configFiles = configFiles

if l, ok := c.Cfg.Get("languagesSorted").(helpers.Languages); ok {
if l, ok := c.Cfg.Get("languagesSorted").(langs.Languages); ok {
c.languagesConfigured = true
c.languages = l
}
Expand Down Expand Up @@ -209,6 +194,15 @@ func (c *commandeer) loadConfig(running bool) error {
}

err = c.initFs(fs)
if err != nil {
return
}

var h *hugolib.HugoSites

h, err = hugolib.NewHugoSites(*c.DepsCfg)
c.hugo = h

})

if err != nil {
Expand All @@ -232,7 +226,7 @@ func (c *commandeer) loadConfig(running bool) error {

cfg.Logger.INFO.Println("Using config file:", config.ConfigFileUsed())

themeDir := c.PathSpec().GetThemeDir()
themeDir := c.hugo.PathSpec.GetFirstThemeDir()
if themeDir != "" {
if _, err := sourceFs.Stat(themeDir); os.IsNotExist(err) {
return newSystemError("Unable to find theme Directory:", themeDir)
Expand Down
2 changes: 1 addition & 1 deletion commands/commands.go
Expand Up @@ -148,7 +148,7 @@ Complete documentation is available at http://gohugo.io/.`,
return nil
}

c, err := initializeConfig(cc.buildWatch, &cc.hugoBuilderCommon, cc, cfgInit)
c, err := initializeConfig(true, cc.buildWatch, &cc.hugoBuilderCommon, cc, cfgInit)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion commands/config.go
Expand Up @@ -44,7 +44,7 @@ func newConfigCmd() *configCmd {
}

func (c *configCmd) printConfig(cmd *cobra.Command, args []string) error {
cfg, err := initializeConfig(false, &c.hugoBuilderCommon, c, nil)
cfg, err := initializeConfig(true, false, &c.hugoBuilderCommon, c, nil)

if err != nil {
return err
Expand Down
2 changes: 1 addition & 1 deletion commands/convert.go
Expand Up @@ -96,7 +96,7 @@ func (cc *convertCmd) convertContents(mark rune) error {
return newUserError("Unsafe operation not allowed, use --unsafe or set a different output path")
}

c, err := initializeConfig(false, &cc.hugoBuilderCommon, cc, nil)
c, err := initializeConfig(true, false, &cc.hugoBuilderCommon, cc, nil)
if err != nil {
return err
}
Expand Down

0 comments on commit a1e92be

Please sign in to comment.