parent
406af7b834
commit
a6ae6223eb
@ -0,0 +1,82 @@ |
|||||||
|
package caddyhugo |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"os" |
||||||
|
"path" |
||||||
|
"path/filepath" |
||||||
|
"sort" |
||||||
|
"time" |
||||||
|
|
||||||
|
"github.com/gohugoio/hugo/hugolib" |
||||||
|
) |
||||||
|
|
||||||
|
type Content struct { |
||||||
|
Filename string |
||||||
|
Modtime time.Time |
||||||
|
Metadata *Metadata |
||||||
|
} |
||||||
|
|
||||||
|
type Metadata struct { |
||||||
|
Title string |
||||||
|
Path string |
||||||
|
Date, Lastmod time.Time |
||||||
|
} |
||||||
|
|
||||||
|
func ListContent() ([]Content, error) { |
||||||
|
return nil, nil |
||||||
|
} |
||||||
|
|
||||||
|
func GetContent(siteRoot string, sites *hugolib.HugoSites) ([]Content, error) { |
||||||
|
var files = []Content{} |
||||||
|
|
||||||
|
err := filepath.Walk(path.Join(siteRoot, "content"), func(name string, fi os.FileInfo, err error) error { |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
if fi.IsDir() { |
||||||
|
return nil |
||||||
|
} |
||||||
|
|
||||||
|
name, err = filepath.Rel(siteRoot, name) |
||||||
|
if err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
|
||||||
|
files = append(files, Content{ |
||||||
|
Filename: name, |
||||||
|
Modtime: fi.ModTime(), |
||||||
|
}) |
||||||
|
return nil |
||||||
|
}) |
||||||
|
|
||||||
|
sort.Slice(files, func(i, j int) bool { |
||||||
|
return files[i].Modtime.Before(files[j].Modtime) |
||||||
|
}) |
||||||
|
|
||||||
|
if err != nil { |
||||||
|
fmt.Println(err) |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
|
||||||
|
pages := sites.Pages() |
||||||
|
for _, page := range pages { |
||||||
|
if page.Kind == hugolib.KindPage { |
||||||
|
for i, file := range files { |
||||||
|
path := path.Join("content", page.Source.Path()) |
||||||
|
if file.Filename == path { |
||||||
|
files[i].Metadata = &Metadata{ |
||||||
|
Title: page.Title, |
||||||
|
Path: path, |
||||||
|
Date: page.Date, |
||||||
|
Lastmod: page.Lastmod, |
||||||
|
} |
||||||
|
break |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return files, nil |
||||||
|
} |
Loading…
Reference in new issue