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) 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" }