diff --git a/README.md b/README.md index f6825ec..b1dc9bc 100644 --- a/README.md +++ b/README.md @@ -16,17 +16,25 @@ indir [--host address] [--port port] [--root http_root] directory --root http_root hosts on the specified subdirectory, i.e. `/files/` ``` -## customization +## features -### readme +### file serving +indir has the possibility of automatically serving an `index.html` instead of displaying the directory view! + +### customization + +#### readme drop a `README.md` into any directory and indir will render it below the file listing with full markdown support! +#### custom css +using a 'index.css' file, you can customize the directory view! + --- ## to-do: - [x] use templates instead of hard-coded HTML (i was lazy) - [x] directory header from readme file -- [ ] directory stylesheet overrides +- [x] directory stylesheet overrides - [x] index.html serving support -- [x] fix mime-types for browser file view \ No newline at end of file +- [x] fix mime-types for browser file view diff --git a/main.go b/main.go index d01ac12..cc2247e 100755 --- a/main.go +++ b/main.go @@ -29,6 +29,7 @@ type ( Root bool Files []*File Readme template.HTML + CSS template.CSS } File struct { @@ -181,6 +182,15 @@ func main() { return } + // load index.css if present + var customCSS template.CSS + cssPath := filepath.Join(fpath, "index.css") + if cssInfo, err := os.Stat(cssPath); err == nil && !cssInfo.IsDir() { + if src, err := os.ReadFile(cssPath); err == nil { + customCSS = template.CSS(src) + } + } + // embeded readme var readmeHTML template.HTML entries, err := os.ReadDir(fpath) @@ -205,6 +215,7 @@ func main() { Name: r.URL.Path, Files: []*File{}, Readme: readmeHTML, + CSS: customCSS, } fsDir := os.DirFS(fpath) diff --git a/templates/dir.html b/templates/dir.html index a885117..bd812e3 100644 --- a/templates/dir.html +++ b/templates/dir.html @@ -142,6 +142,9 @@ } } + {{if .CSS}} + + {{end}}