5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-05 07:31:15 +08:00
wails/v3/internal/commands/watcher.go
2023-11-27 20:38:42 +11:00

44 lines
1.5 KiB
Go

package commands
import (
"github.com/atterpac/refresh/engine"
"strings"
)
type WatcherOptions struct {
Path string `description:"The path to watch" default:"."`
PreExec string `description:"The command to run before the main command"`
Exec string `description:"The command to run when a change is detected"`
PostExec string `description:"The command to run after the main command"`
IgnoreFiles string `description:"The files to ignore (comma separated)"`
IgnoreDirs string `description:"The directories to ignore (comma separated)"`
IgnoreExtensions string `description:"The extensions to ignore (comma separated)"`
Debounce int `description:"The debounce time in milliseconds" default:"1000"`
PreWait bool `description:"Wait for the pre-exec command to finish before running the main command"`
}
func Watcher(options *WatcherOptions) error {
ignore := engine.Ignore{
File: strings.Split(options.IgnoreFiles, ","),
Dir: strings.Split(options.IgnoreDirs, ","),
Extension: strings.Split(options.IgnoreExtensions, ","),
}
config := engine.Config{
RootPath: options.Path,
PreExec: options.PreExec,
ExecCommand: options.Exec,
PostExec: options.PostExec,
Ignore: ignore,
LogLevel: "info",
Debounce: options.Debounce,
PreWait: options.PreWait,
}
watch := engine.NewEngineFromConfig(config)
watch.Start()
<-make(chan struct{})
return nil
}