Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-11-15 12:25:30 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2021-11-15 13:21:39 +0300
commitb8155452ac699473b6b2a34f53988dee01b4da34 (patch)
tree07f88f6bdac3f09d009dc818ab9a2b95facb03aa /hugolib
parent08552a7a4cd1fe64efdd2f1b95142fa4295cb298 (diff)
Improve error when we cannot determine content directory in "hugo new"
See #9166
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/content_factory.go17
-rw-r--r--hugolib/filesystems/basefs.go10
2 files changed, 15 insertions, 12 deletions
diff --git a/hugolib/content_factory.go b/hugolib/content_factory.go
index 78583f14a..cc87dd9e5 100644
--- a/hugolib/content_factory.go
+++ b/hugolib/content_factory.go
@@ -93,25 +93,28 @@ func (f ContentFactory) AppplyArchetypeTemplate(w io.Writer, p page.Page, archet
}
-func (f ContentFactory) SectionFromFilename(filename string) string {
+func (f ContentFactory) SectionFromFilename(filename string) (string, error) {
filename = filepath.Clean(filename)
- rel, _ := f.h.AbsProjectContentDir(filename)
- if rel == "" {
- return ""
+ rel, _, err := f.h.AbsProjectContentDir(filename)
+ if err != nil {
+ return "", err
}
parts := strings.Split(helpers.ToSlashTrimLeading(rel), "/")
if len(parts) < 2 {
- return ""
+ return "", nil
}
- return parts[0]
+ return parts[0], nil
}
// CreateContentPlaceHolder creates a content placeholder file inside the
// best matching content directory.
func (f ContentFactory) CreateContentPlaceHolder(filename string) (string, error) {
filename = filepath.Clean(filename)
- _, abs := f.h.AbsProjectContentDir(filename)
+ _, abs, err := f.h.AbsProjectContentDir(filename)
+ if err != nil {
+ return "", err
+ }
// This will be overwritten later, just write a placholder to get
// the paths correct.
diff --git a/hugolib/filesystems/basefs.go b/hugolib/filesystems/basefs.go
index 939d88459..be765ef9d 100644
--- a/hugolib/filesystems/basefs.go
+++ b/hugolib/filesystems/basefs.go
@@ -132,7 +132,7 @@ func (b *BaseFs) RelContentDir(filename string) string {
// AbsProjectContentDir tries to construct a filename below the most
// relevant content directory.
-func (b *BaseFs) AbsProjectContentDir(filename string) (string, string) {
+func (b *BaseFs) AbsProjectContentDir(filename string) (string, string, error) {
isAbs := filepath.IsAbs(filename)
for _, dir := range b.SourceFilesystems.Content.Dirs {
meta := dir.Meta()
@@ -141,14 +141,14 @@ func (b *BaseFs) AbsProjectContentDir(filename string) (string, string) {
}
if isAbs {
if strings.HasPrefix(filename, meta.Filename) {
- return strings.TrimPrefix(filename, meta.Filename), filename
+ return strings.TrimPrefix(filename, meta.Filename), filename, nil
}
} else {
contentDir := strings.TrimPrefix(strings.TrimPrefix(meta.Filename, meta.BaseDir), filePathSeparator)
if strings.HasPrefix(filename, contentDir) {
relFilename := strings.TrimPrefix(filename, contentDir)
absFilename := filepath.Join(meta.Filename, relFilename)
- return relFilename, absFilename
+ return relFilename, absFilename, nil
}
}
@@ -162,12 +162,12 @@ func (b *BaseFs) AbsProjectContentDir(filename string) (string, string) {
for i := len(contentDirs) - 1; i >= 0; i-- {
meta := contentDirs[i].Meta()
if meta.Module == "project" {
- return filename, filepath.Join(meta.Filename, filename)
+ return filename, filepath.Join(meta.Filename, filename), nil
}
}
}
- return "", ""
+ return "", "", errors.Errorf("could not determine content directory for %q", filename)
}
// ResolveJSConfigFile resolves the JS-related config file to a absolute