ref: master
./wiki.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
// This package holds the logic for reading a dir, finding out the main file, // etc. It's a mere abstraction on top of the wiki's filesystem. When fed with // a path, it'll return a read file for markdown consumption package main import ( "errors" "os" "path" ) func Lookup(wikiPath string, docPath string) ([]byte, error) { if docPath == "" { docPath = "README.md" } routePath := path.Join(wikiPath, docPath) fileInfo, err := os.Stat(routePath) if err != nil { return nil, err } if fileInfo.IsDir() { files, err := os.ReadDir(routePath) if err != nil { return nil, err } for _, file := range files { switch file.Name() { case "index.md", "INDEX.md", "readme.md", "README.md": source, err := os.ReadFile(path.Join(routePath, file.Name())) if err != nil { return nil, err } return source, nil } } } else { source, err := os.ReadFile(routePath) if err != nil { return nil, err } return source, nil } return nil, errors.New("Something wen't really wrong") } |