feat(plugins): mounts dist folder if exists in plugin

closes #4230
This commit is contained in:
bergquist 2016-03-02 15:11:24 +01:00
parent 10db47bf4c
commit eb79436ab7
2 changed files with 25 additions and 2 deletions

View File

@ -90,6 +90,10 @@ func scan(pluginDir string) error {
}
log.Info("Plugins: Scaning dir %s", pluginDir)
if util.ContainsDistFolder(pluginDir) {
log.Info("Plugins: Found dist folder in %s", pluginDir)
pluginDir = filepath.Join(pluginDir, "dist")
}
if err := util.Walk(pluginDir, true, true, scanner.walker); err != nil {
if pluginDir != "data/plugins" {

View File

@ -44,8 +44,7 @@ func Walk(path string, followSymlinks bool, detectSymlinkInfiniteLoop bool, walk
//
//If resolvedPath is "", then we are not following symbolic links.
//If symlinkPathsFollowed is not nil, then we need to detect infinite loop.
func walk(path string, info os.FileInfo, resolvedPath string,
symlinkPathsFollowed map[string]bool, walkFn WalkFunc) error {
func walk(path string, info os.FileInfo, resolvedPath string, symlinkPathsFollowed map[string]bool, walkFn WalkFunc) error {
if info == nil {
return errors.New("Walk: Nil FileInfo passed")
}
@ -96,3 +95,23 @@ func walk(path string, info os.FileInfo, resolvedPath string,
}
return nil
}
func ContainsDistFolder(path string) bool {
info, err := os.Lstat(path)
if err != nil {
return false
}
if !info.IsDir() {
return false
}
list, err := ioutil.ReadDir(path)
for _, fileInfo := range list {
if fileInfo.IsDir() && fileInfo.Name() == "dist" {
return true
}
}
return false
}