diff options
| author | Leonardo Bishop <me@leonardobishop.net> | 2025-07-08 23:26:05 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.net> | 2025-07-08 23:26:05 +0100 |
| commit | cdb75d3fcbc9339b897f8c6ff4d69a577f017393 (patch) | |
| tree | 5e757cd236540c2cea9874c1bc09f19548db05d5 /pkg/site/fs.go | |
| parent | b56101f1a11552067f594679a497ebd4cf7427d4 (diff) | |
Rewrite in Go
Diffstat (limited to 'pkg/site/fs.go')
| -rw-r--r-- | pkg/site/fs.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/pkg/site/fs.go b/pkg/site/fs.go new file mode 100644 index 0000000..a77da63 --- /dev/null +++ b/pkg/site/fs.go @@ -0,0 +1,36 @@ +package site + +import ( + "net/http" + "path/filepath" +) + +type siteFS struct { + fs http.FileSystem +} + +func (sfs siteFS) Open(path string) (http.File, error) { + f, err := sfs.fs.Open(path) + if err != nil { + return nil, err + } + + s, err := f.Stat() + if err != nil { + return nil, err + } + + if s.IsDir() { + index := filepath.Join(path, "index.html") + if _, err := sfs.fs.Open(index); err != nil { + closeErr := f.Close() + if closeErr != nil { + return nil, closeErr + } + + return nil, err + } + } + + return f, nil +} |
