hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 2b6063c3e388056597af88709ff017d15f53c962
parent 56ab83a59712725e1ce0dd3fd516cc7c190c8478
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Tue,  4 Jan 2022 13:07:10 +0100

Misc depreation updates

* Deprecate .Page.Path when backed by a file
* site.Permalinks
* --ignoreVendor (use --ignoreVendorPaths)

Closes #9348
Closes #9349

Diffstat:
Mcommands/commands.go | 4+---
Mcommands/commands_test.go | 10----------
Mcommands/convert.go | 6+++---
Mcommands/hugo.go | 4----
Mcommands/mod.go | 2+-
Mhugofs/files/classifier.go | 1-
Mhugolib/config.go | 8--------
Mhugolib/content_map_page.go | 5++---
Mhugolib/page.go | 6+++---
Mhugolib/page__meta.go | 20+++++++++++++++++++-
Mhugolib/site.go | 9+--------
Mhugolib/site_test.go | 2+-
Mhugolib/testhelpers_test.go | 7+++----
Mmodules/client.go | 2+-
Mresources/page/page.go | 6++++--
Mresources/page/page_marshaljson.autogen.go | 7++++---
Mresources/page/page_matcher.go | 3+--
Mresources/page/page_nop.go | 4++++
Mresources/page/testhelpers_test.go | 4++++
19 files changed, 52 insertions(+), 58 deletions(-)
diff --git a/commands/commands.go b/commands/commands.go
@@ -131,8 +131,7 @@ type hugoCmd struct {
 
 var _ cmder = (*nilCommand)(nil)
 
-type nilCommand struct {
-}
+type nilCommand struct{}
 
 func (c *nilCommand) getCommand() *cobra.Command {
 	return nil
@@ -281,7 +280,6 @@ func (cc *hugoBuilderCommon) handleCommonBuilderFlags(cmd *cobra.Command) {
 	cmd.PersistentFlags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{})
 	cmd.PersistentFlags().StringVarP(&cc.environment, "environment", "e", "", "build environment")
 	cmd.PersistentFlags().StringP("themesDir", "", "", "filesystem path to themes directory")
-	cmd.PersistentFlags().BoolP("ignoreVendor", "", false, "ignores any _vendor directory")
 	cmd.PersistentFlags().StringP("ignoreVendorPaths", "", "", "ignores any _vendor for module paths matching the given Glob pattern")
 }
 
diff --git a/commands/commands_test.go b/commands/commands_test.go
@@ -164,16 +164,6 @@ func TestFlags(t *testing.T) {
 	}{
 		{
 			// https://github.com/gohugoio/hugo/issues/7642
-			name: "ignoreVendor as bool",
-			args: []string{"server", "--ignoreVendor"},
-			check: func(c *qt.C, cmd *serverCmd) {
-				cfg := config.New()
-				cmd.flagsToConfig(cfg)
-				c.Assert(cfg.Get("ignoreVendor"), qt.Equals, true)
-			},
-		},
-		{
-			// https://github.com/gohugoio/hugo/issues/7642
 			name: "ignoreVendorPaths",
 			args: []string{"server", "--ignoreVendorPaths=github.com/**"},
 			check: func(c *qt.C, cmd *serverCmd) {
diff --git a/commands/convert.go b/commands/convert.go
@@ -142,7 +142,7 @@ func (cc *convertCmd) convertAndSavePage(p page.Page, site *hugolib.Site, target
 		return nil
 	}
 
-	errMsg := fmt.Errorf("Error processing file %q", p.Path())
+	errMsg := fmt.Errorf("Error processing file %q", p.File().Path())
 
 	site.Log.Infoln("Attempting to convert", p.File().Filename())
 
@@ -185,10 +185,10 @@ func (cc *convertCmd) convertAndSavePage(p page.Page, site *hugolib.Site, target
 	newFilename := p.File().Filename()
 
 	if cc.outputDir != "" {
-		contentDir := strings.TrimSuffix(newFilename, p.Path())
+		contentDir := strings.TrimSuffix(newFilename, p.File().Path())
 		contentDir = filepath.Base(contentDir)
 
-		newFilename = filepath.Join(cc.outputDir, contentDir, p.Path())
+		newFilename = filepath.Join(cc.outputDir, contentDir, p.File().Path())
 	}
 
 	fs := hugofs.Os
diff --git a/commands/hugo.go b/commands/hugo.go
@@ -199,7 +199,6 @@ func initializeFlags(cmd *cobra.Command, cfg config.Provider) {
 		"forceSyncStatic",
 		"noTimes",
 		"noChmod",
-		"ignoreVendor",
 		"ignoreVendorPaths",
 		"templateMetrics",
 		"templateMetricsHints",
@@ -281,7 +280,6 @@ func isTerminal() bool {
 }
 
 func (c *commandeer) fullBuild(noBuildLock bool) error {
-
 	var (
 		g         errgroup.Group
 		langCount map[string]uint64
@@ -542,7 +540,6 @@ func (c *commandeer) build() error {
 }
 
 func (c *commandeer) serverBuild() error {
-
 	stopProfiling, err := c.initProfiling()
 	if err != nil {
 		return err
@@ -739,7 +736,6 @@ func (c *commandeer) handleBuildErr(err error, msg string) {
 }
 
 func (c *commandeer) rebuildSites(events []fsnotify.Event) error {
-
 	c.buildErr = nil
 	visited := c.visitedURLs.PeekAllSet()
 	if c.fastRenderMode {
diff --git a/commands/mod.go b/commands/mod.go
@@ -96,7 +96,7 @@ func (b *commandsBuilder) newModCmd() *modCmd {
 
 	const commonUsage = `
 Note that Hugo will always start out by resolving the components defined in the site
-configuration, provided by a _vendor directory (if no --ignoreVendor flag provided),
+configuration, provided by a _vendor directory (if no --ignoreVendorPaths flag provided),
 Go Modules, or a folder inside the themes directory, in that order.
 
 See https://gohugo.io/hugo-modules/ for more information.
diff --git a/hugofs/files/classifier.go b/hugofs/files/classifier.go
@@ -40,7 +40,6 @@ var (
 		"mdown", "markdown", "md",
 		"asciidoc", "adoc", "ad",
 		"rest", "rst",
-		"mmark",
 		"org",
 		"pandoc", "pdc",
 	}
diff --git a/hugolib/config.go b/hugolib/config.go
@@ -53,7 +53,6 @@ var ErrNoConfigFile = errors.New("Unable to locate config file or config directo
 // LoadConfig loads Hugo configuration into a new Viper and then adds
 // a set of defaults.
 func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provider) error) (config.Provider, []string, error) {
-
 	if d.Environment == "" {
 		d.Environment = hugo.EnvironmentProduction
 	}
@@ -110,15 +109,8 @@ func LoadConfig(d ConfigSourceDescriptor, doWithConfig ...func(cfg config.Provid
 	}
 
 	// Config deprecations.
-	// We made this a Glob pattern in Hugo 0.75, we don't need both.
-	if l.cfg.GetBool("ignoreVendor") {
-		helpers.Deprecated("--ignoreVendor", "Use --ignoreVendorPaths \"**\"", true)
-		l.cfg.Set("ignoreVendorPaths", "**")
-	}
-
 	if l.cfg.GetString("markup.defaultMarkdownHandler") == "blackfriday" {
 		helpers.Deprecated("markup.defaultMarkdownHandler=blackfriday", "See https://gohugo.io//content-management/formats/#list-of-content-formats", false)
-
 	}
 
 	// Some settings are used before we're done collecting all settings,
diff --git a/hugolib/content_map_page.go b/hugolib/content_map_page.go
@@ -403,7 +403,7 @@ func (m *pageMap) assembleResources(s string, p *pageState, parentBucket *pagesM
 			if err != nil {
 				return true
 			}
-			rp.m.resourcePath = filepath.ToSlash(strings.TrimPrefix(rp.Path(), p.File().Dir()))
+			rp.m.resourcePath = filepath.ToSlash(strings.TrimPrefix(rp.File().Path(), p.File().Dir()))
 			r = rp
 
 		case files.ContentClassFile:
@@ -468,7 +468,6 @@ func (m *pageMap) assembleSections() error {
 
 		kind := page.KindSection
 		if s == "/" {
-
 			kind = page.KindHome
 		}
 
@@ -580,7 +579,7 @@ func (m *pageMap) attachPageToViews(s string, b *contentNode) {
 		w := getParamToLower(b.p, viewName.plural+"_weight")
 		weight, err := cast.ToIntE(w)
 		if err != nil {
-			m.s.Log.Errorf("Unable to convert taxonomy weight %#v to int for %q", w, b.p.Path())
+			m.s.Log.Errorf("Unable to convert taxonomy weight %#v to int for %q", w, b.p.Pathc())
 			// weight will equal zero, so let the flow continue
 		}
 
diff --git a/hugolib/page.go b/hugolib/page.go
@@ -145,7 +145,7 @@ func (p *pageState) Eq(other interface{}) bool {
 }
 
 func (p *pageState) GetIdentity() identity.Identity {
-	return identity.NewPathIdentity(files.ComponentFolderContent, filepath.FromSlash(p.Path()))
+	return identity.NewPathIdentity(files.ComponentFolderContent, filepath.FromSlash(p.Pathc()))
 }
 
 func (p *pageState) GitInfo() *gitmap.GitInfo {
@@ -895,8 +895,8 @@ func (p *pageState) pathOrTitle() string {
 		return p.File().Filename()
 	}
 
-	if p.Path() != "" {
-		return p.Path()
+	if p.Pathc() != "" {
+		return p.Pathc()
 	}
 
 	return p.Title()
diff --git a/hugolib/page__meta.go b/hugolib/page__meta.go
@@ -233,6 +233,24 @@ func (p *pageMeta) Params() maps.Params {
 
 func (p *pageMeta) Path() string {
 	if !p.File().IsZero() {
+		const example = `
+  {{ $path := "" }}
+  {{ with .File }}
+	{{ $path = .Path }}
+  {{ else }}
+	{{ $path = .Path }}
+  {{ end }}
+`
+		helpers.Deprecated(".Path when the page is backed by a file", "We plan to use Path for a canonical source path and you probably want to check the source is a file. To get the current behaviour, you can use a construct simlar to the below:\n"+example, false)
+
+	}
+
+	return p.Pathc()
+}
+
+// This is just a bridge method, use Path in templates.
+func (p *pageMeta) Pathc() string {
+	if !p.File().IsZero() {
 		return p.File().Path()
 	}
 	return p.SectionsPath()
@@ -759,7 +777,7 @@ func (p *pageMeta) newContentConverter(ps *pageState, markup string, renderingCo
 		converter.DocumentContext{
 			Document:        newPageForRenderHook(ps),
 			DocumentID:      id,
-			DocumentName:    p.Path(),
+			DocumentName:    p.File().Path(),
 			Filename:        filename,
 			ConfigOverrides: renderingConfigOverrides,
 		},
diff --git a/hugolib/site.go b/hugolib/site.go
@@ -689,12 +689,6 @@ func (s *SiteInfo) AllRegularPages() page.Pages {
 	return s.s.AllRegularPages()
 }
 
-func (s *SiteInfo) Permalinks() map[string]string {
-	// Remove in 0.61
-	helpers.Deprecated(".Site.Permalinks", "", true)
-	return s.permalinks
-}
-
 func (s *SiteInfo) LastChange() time.Time {
 	return s.s.lastmod
 }
@@ -825,7 +819,7 @@ func (s siteRefLinker) logNotFound(ref, what string, p page.Page, position text.
 	} else if p == nil {
 		s.errorLogger.Printf("[%s] REF_NOT_FOUND: Ref %q: %s", s.s.Lang(), ref, what)
 	} else {
-		s.errorLogger.Printf("[%s] REF_NOT_FOUND: Ref %q from page %q: %s", s.s.Lang(), ref, p.Path(), what)
+		s.errorLogger.Printf("[%s] REF_NOT_FOUND: Ref %q from page %q: %s", s.s.Lang(), ref, p.Pathc(), what)
 	}
 }
 
@@ -1402,7 +1396,6 @@ func (s *Site) getMenusFromConfig() navigation.Menus {
 					}
 					s.Log.Errorf("unable to process menus in site config\n")
 					s.Log.Errorln(err)
-
 				}
 
 				for _, entry := range m {
diff --git a/hugolib/site_test.go b/hugolib/site_test.go
@@ -957,7 +957,7 @@ func TestRefLinking(t *testing.T) {
 func checkLinkCase(site *Site, link string, currentPage page.Page, relative bool, outputFormat string, expected string, t *testing.T, i int) {
 	t.Helper()
 	if out, err := site.refLink(link, currentPage, relative, outputFormat); err != nil || out != expected {
-		t.Fatalf("[%d] Expected %q from %q to resolve to %q, got %q - error: %s", i, link, currentPage.Path(), expected, out, err)
+		t.Fatalf("[%d] Expected %q from %q to resolve to %q, got %q - error: %s", i, link, currentPage.Pathc(), expected, out, err)
 	}
 }
 
diff --git a/hugolib/testhelpers_test.go b/hugolib/testhelpers_test.go
@@ -800,7 +800,6 @@ func (s *sitesBuilder) NpmInstall() hexec.Runner {
 	command, err := ex.New("npm", "install")
 	s.Assert(err, qt.IsNil)
 	return command
-
 }
 
 func newTestHelper(cfg config.Provider, fs *hugofs.Fs, t testing.TB) testHelper {
@@ -998,7 +997,7 @@ func content(c resource.ContentProvider) string {
 func pagesToString(pages ...page.Page) string {
 	var paths []string
 	for _, p := range pages {
-		paths = append(paths, p.Path())
+		paths = append(paths, p.Pathc())
 	}
 	sort.Strings(paths)
 	return strings.Join(paths, "|")
@@ -1020,7 +1019,7 @@ func dumpPages(pages ...page.Page) {
 	fmt.Println("---------")
 	for _, p := range pages {
 		fmt.Printf("Kind: %s Title: %-10s RelPermalink: %-10s Path: %-10s sections: %s Lang: %s\n",
-			p.Kind(), p.Title(), p.RelPermalink(), p.Path(), p.SectionsPath(), p.Lang())
+			p.Kind(), p.Title(), p.RelPermalink(), p.Pathc(), p.SectionsPath(), p.Lang())
 	}
 }
 
@@ -1028,7 +1027,7 @@ func dumpSPages(pages ...*pageState) {
 	for i, p := range pages {
 		fmt.Printf("%d: Kind: %s Title: %-10s RelPermalink: %-10s Path: %-10s sections: %s\n",
 			i+1,
-			p.Kind(), p.Title(), p.RelPermalink(), p.Path(), p.SectionsPath())
+			p.Kind(), p.Title(), p.RelPermalink(), p.Pathc(), p.SectionsPath())
 	}
 }
 
diff --git a/modules/client.go b/modules/client.go
@@ -191,7 +191,7 @@ func (c *Client) Tidy() error {
 //
 // We, by default, use the /_vendor folder first, if found. To disable,
 // run with
-//    hugo --ignoreVendor
+//    hugo --ignoreVendorPaths=".*"
 //
 // Given a module tree, Hugo will pick the first module for a given path,
 // meaning that if the top-level module is vendored, that will be the full
diff --git a/resources/page/page.go b/resources/page/page.go
@@ -180,6 +180,9 @@ type PageMetaProvider interface {
 	// to the source of this Page. It will be relative to any content root.
 	Path() string
 
+	// This is just a temporary bridge method. Use Path in templates.
+	Pathc() string
+
 	// The slug, typically defined in front matter.
 	Slug() string
 
@@ -392,5 +395,4 @@ type DeprecatedWarningPageMethods1 interface {
 
 // Move here to trigger ERROR instead of WARNING.
 // TODO(bep) create wrappers and put into the Page once it has some methods.
-type DeprecatedErrorPageMethods interface {
-}
+type DeprecatedErrorPageMethods interface{}
diff --git a/resources/page/page_marshaljson.autogen.go b/resources/page/page_marshaljson.autogen.go
@@ -17,6 +17,9 @@ package page
 
 import (
 	"encoding/json"
+	"html/template"
+	"time"
+
 	"github.com/bep/gitmap"
 	"github.com/gohugoio/hugo/common/maps"
 	"github.com/gohugoio/hugo/config"
@@ -26,8 +29,6 @@ import (
 	"github.com/gohugoio/hugo/media"
 	"github.com/gohugoio/hugo/navigation"
 	"github.com/gohugoio/hugo/source"
-	"html/template"
-	"time"
 )
 
 func MarshalPageToJSON(p Page) ([]byte, error) {
@@ -68,7 +69,7 @@ func MarshalPageToJSON(p Page) ([]byte, error) {
 	linkTitle := p.LinkTitle()
 	isNode := p.IsNode()
 	isPage := p.IsPage()
-	path := p.Path()
+	path := p.Pathc()
 	slug := p.Slug()
 	lang := p.Lang()
 	isSection := p.IsSection()
diff --git a/resources/page/page_matcher.go b/resources/page/page_matcher.go
@@ -59,7 +59,7 @@ func (m PageMatcher) Matches(p Page) bool {
 	if m.Path != "" {
 		g, err := glob.GetGlob(m.Path)
 		// TODO(bep) Path() vs filepath vs leading slash.
-		p := strings.ToLower(filepath.ToSlash(p.Path()))
+		p := strings.ToLower(filepath.ToSlash(p.Pathc()))
 		if !(strings.HasPrefix(p, "/")) {
 			p = "/" + p
 		}
@@ -104,7 +104,6 @@ func DecodeCascade(in interface{}) (map[PageMatcher]maps.Params, error) {
 	}
 
 	return cascade, nil
-
 }
 
 // DecodePageMatcher decodes m into v.
diff --git a/resources/page/page_nop.go b/resources/page/page_nop.go
@@ -338,6 +338,10 @@ func (p *nopPage) Path() string {
 	return ""
 }
 
+func (p *nopPage) Pathc() string {
+	return ""
+}
+
 func (p *nopPage) Permalink() string {
 	return ""
 }
diff --git a/resources/page/testhelpers_test.go b/resources/page/testhelpers_test.go
@@ -414,6 +414,10 @@ func (p *testPage) Path() string {
 	return p.path
 }
 
+func (p *testPage) Pathc() string {
+	return p.path
+}
+
 func (p *testPage) Permalink() string {
 	panic("not implemented")
 }