diff options
Diffstat (limited to 'pkg/themes/themes.go')
| -rw-r--r-- | pkg/themes/themes.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/pkg/themes/themes.go b/pkg/themes/themes.go new file mode 100644 index 0000000..a8af863 --- /dev/null +++ b/pkg/themes/themes.go @@ -0,0 +1,40 @@ +package themes + +import ( + "os" + "path/filepath" +) + +type Theme struct { + Name string + Path string +} + +func List(themesDir string) ([]Theme, error) { + entries, err := os.ReadDir(themesDir) + if err != nil { + return nil, err + } + + var themes []Theme + for _, entry := range entries { + if entry.IsDir() { + themes = append(themes, Theme{ + Name: entry.Name(), + Path: filepath.Join(themesDir, entry.Name()), + }) + } + } + + return themes, nil +} + +func GetThemePath(themesDir, themeName string) string { + return filepath.Join(themesDir, themeName) +} + +func ThemeExists(themesDir, themeName string) bool { + path := GetThemePath(themesDir, themeName) + info, err := os.Stat(path) + return err == nil && info.IsDir() +} |
