nirvash/archetype/eureka.go

108 lines
2.1 KiB
Go
Raw Normal View History

package archetype
import (
"errors"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
type EurekaAdapter struct {
Root string
}
func (self *EurekaAdapter) Init(cfg *Config) {
fileInfo, err := os.Stat(cfg.Root)
if os.IsNotExist(err) {
panic("SSG content root does not exist! Ensure your configs are correct or create it!")
} else if !fileInfo.IsDir() {
panic("SSG content root is not a directory!")
}
self.Root = cfg.Root
}
func (self *EurekaAdapter) Name() string {
return "eureka"
}
func (self *EurekaAdapter) EditMode() EditMode {
2022-06-03 04:56:38 +00:00
return EditModeLiteralTextArea
}
func (self *EurekaAdapter) GetConfig(key string) (interface{}, error) {
return nil, nil
}
func (self *EurekaAdapter) SetConfig(key string, value interface{}) error {
return nil
}
func (self *EurekaAdapter) ListPages() map[string]string {
files, err := ioutil.ReadDir(
filepath.Join(self.Root, "inc"))
if err != nil {
panic(err.Error())
}
pages := map[string]string{}
for _, file := range files {
filename := file.Name()
if strings.HasSuffix(filename, ".htm") {
pages[filename] = strings.Replace(
strings.TrimSuffix(filename, ".htm"), "_", " ", -1)
}
}
return pages
}
func (self *EurekaAdapter) GetPage(filename string) (Page, error) {
fullPath := filepath.Join(self.Root, "inc", filename)
f, err := os.ReadFile(fullPath)
if err != nil {
return Page{}, err
}
if !strings.HasSuffix(filename, ".htm") {
return Page{}, errors.New("Page file extension is not '.htm'")
}
title := strings.Replace(
strings.TrimSuffix(filename, ".htm"), "_", " ", -1)
fileInfo, _ := os.Stat(fullPath)
content := string(f[:])
return Page{
Title: title,
Content: content,
Edited: fileInfo.ModTime(),
}, nil
}
func (self *EurekaAdapter) FormatPage(raw string) string {
return raw
}
func (self *EurekaAdapter) FormattingHelp() string {
return "help!"
}
func (self *EurekaAdapter) CreatePage(page Page) error {
return nil
}
func (self *EurekaAdapter) EditPage(old Page, new Page) error {
return nil
}
func (self *EurekaAdapter) DeletePage(page Page) error {
return nil
}
func (self *EurekaAdapter) Build() string {
return "Build successful"
}