shithub: hugo

Download patch

ref: 1058cb17d14ea404838e759ebe028e3ad992668a
parent: 0987e98db368611ceae6e83f14bbf57b8330c110
author: Jonathan Anderson <[email protected]>
date: Fri Jun 19 06:56:32 EDT 2015

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?

--- a/helpers/path.go
+++ b/helpers/path.go
@@ -204,6 +204,15 @@
 	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.
 // If theme is set and the static dir doesn't exist, an error is returned.
 func GetThemeStaticDirPath() (string, error) {
@@ -219,7 +228,7 @@
 func getThemeDirPath(path string) (string, error) {
 	var themeDir string
 	if ThemeSet() {
-		themeDir = AbsPathify("themes/"+viper.GetString("theme")) + FilePathSeparator + path
+		themeDir = filepath.Join(GetThemeDir(), path)
 		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)
 		}
@@ -227,8 +236,11 @@
 	return themeDir, nil
 }
 
+// Get the 'static' directory of the current theme, if there is one.
+// Ignores underlying errors. Candidate for deprecation?
 func GetThemesDirPath() string {
-	return AbsPathify(filepath.Join("themes", viper.GetString("theme"), "static"))
+	dir, _ := getThemeDirPath("static")
+	return dir
 }
 
 func MakeStaticPathRelative(inPath string) (string, error) {