diff --git a/main.go b/main.go index 1dea9dd..1cc9c90 100644 --- a/main.go +++ b/main.go @@ -15,8 +15,9 @@ package main import ( "flag" "fmt" - "github.com/pilu/fresh/runner" "os" + + "github.com/pilu/fresh/runner" ) func main() { diff --git a/runner/settings.go b/runner/settings.go index 10117ec..32e976a 100644 --- a/runner/settings.go +++ b/runner/settings.go @@ -20,6 +20,7 @@ const ( var settings = map[string]string{ "config_path": "./runner.conf", "root": ".", + "subfolder": "", "tmp_path": "./tmp", "build_name": "runner-build", "build_log": "runner-build-errors.log", @@ -116,6 +117,10 @@ func tmpPath() string { return settings["tmp_path"] } +func subfolder() []string { + return strings.Split(settings["subfolder"], ",") +} + func buildName() string { return settings["build_name"] } diff --git a/runner/watcher.go b/runner/watcher.go index 1f3f1ac..30e382c 100644 --- a/runner/watcher.go +++ b/runner/watcher.go @@ -54,4 +54,30 @@ func watch() { return err }) + + subfolders := subfolder() + for _, subfolder := range subfolders { + if len(subfolder) == 0 { + continue + } + filepath.Walk(strings.TrimSpace(subfolder), func(path string, info os.FileInfo, err error) error { + if info == nil { + return err + } + if info.IsDir() && !isTmpDir(path) { + if len(path) > 1 && strings.HasPrefix(filepath.Base(path), ".") { + return filepath.SkipDir + } + + if isIgnoredFolder(path) { + watcherLog("Ignoring %s", path) + return filepath.SkipDir + } + + watchFolder(path) + } + + return err + }) + } }