Refactor theme path helper functions.

Reduce duplication (`x + FilePathSeparator + y` a few lines away from `filepath.Join(x, y)`) and add a `GetThemeDir()` function to get the current theme's directory.

Also add a comment complaining about the `GetThemesDirPath()` function, which doesn't seem to do what its name would suggest. This might be a candidate for deprecation?
This commit is contained in:
Jonathan Anderson 2015-06-19 10:56:32 -02:30 committed by Bjørn Erik Pedersen
parent 0987e98db3
commit 1058cb17d1

View file

@ -204,6 +204,15 @@ func GetStaticDirPath() string {
return AbsPathify(viper.GetString("StaticDir")) return AbsPathify(viper.GetString("StaticDir"))
} }
// Get the root directory of the current theme, if there is one.
// If there is no theme, returns the empty string.
func GetThemeDir() string {
if ThemeSet() {
return AbsPathify(filepath.Join("themes", viper.GetString("theme")))
}
return ""
}
// GetThemeStaticDirPath returns the theme's static dir path if theme is set. // GetThemeStaticDirPath returns the theme's static dir path if theme is set.
// If theme is set and the static dir doesn't exist, an error is returned. // If theme is set and the static dir doesn't exist, an error is returned.
func GetThemeStaticDirPath() (string, error) { func GetThemeStaticDirPath() (string, error) {
@ -219,7 +228,7 @@ func GetThemeDataDirPath() (string, error) {
func getThemeDirPath(path string) (string, error) { func getThemeDirPath(path string) (string, error) {
var themeDir string var themeDir string
if ThemeSet() { if ThemeSet() {
themeDir = AbsPathify("themes/"+viper.GetString("theme")) + FilePathSeparator + path themeDir = filepath.Join(GetThemeDir(), path)
if _, err := os.Stat(themeDir); os.IsNotExist(err) { if _, err := os.Stat(themeDir); os.IsNotExist(err) {
return "", fmt.Errorf("Unable to find %s directory for theme %s in %s", path, viper.GetString("theme"), themeDir) return "", fmt.Errorf("Unable to find %s directory for theme %s in %s", path, viper.GetString("theme"), themeDir)
} }
@ -227,8 +236,11 @@ func getThemeDirPath(path string) (string, error) {
return themeDir, nil return themeDir, nil
} }
// Get the 'static' directory of the current theme, if there is one.
// Ignores underlying errors. Candidate for deprecation?
func GetThemesDirPath() string { func GetThemesDirPath() string {
return AbsPathify(filepath.Join("themes", viper.GetString("theme"), "static")) dir, _ := getThemeDirPath("static")
return dir
} }
func MakeStaticPathRelative(inPath string) (string, error) { func MakeStaticPathRelative(inPath string) (string, error) {