Neale Pickett
·
2021-10-20
theme.go
1package main
2
3import (
4 "time"
5
6 "github.com/spf13/afero"
7)
8
9// Theme defines a filesystem-backed ThemeProvider.
10type Theme struct {
11 afero.Fs
12}
13
14// NewTheme returns a new Theme, backed by Fs.
15func NewTheme(fs afero.Fs) *Theme {
16 return &Theme{
17 Fs: fs,
18 }
19}
20
21// Open returns a new opened file.
22func (t *Theme) Open(name string) (ReadSeekCloser, time.Time, error) {
23 f, err := t.Fs.Open(name)
24 if err != nil {
25 return nil, time.Time{}, err
26 }
27
28 fi, err := f.Stat()
29 if err != nil {
30 f.Close()
31 return nil, time.Time{}, err
32 }
33
34 return f, fi.ModTime(), nil
35}
36
37// Maintain performs housekeeping for a Theme.
38func (t *Theme) Maintain(i time.Duration) {
39 // No periodic tasks for a theme
40}
41
42func (t *Theme) refresh() {
43 // Nothing to do for a theme
44}