mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-04 01:50:09 +08:00
52 lines
984 B
Go
52 lines
984 B
Go
package commands
|
|
|
|
import (
|
|
"github.com/atterpac/refresh/engine"
|
|
"github.com/wailsapp/wails/v3/internal/signal"
|
|
"gopkg.in/yaml.v3"
|
|
"os"
|
|
)
|
|
|
|
type WatcherOptions struct {
|
|
Config string `description:"The config file including path" default:"."`
|
|
}
|
|
|
|
func Watcher(options *WatcherOptions) error {
|
|
stopChan := make(chan struct{})
|
|
|
|
// Parse the config file
|
|
type devConfig struct {
|
|
Config engine.Config `yaml:"dev_mode"`
|
|
}
|
|
|
|
var devconfig devConfig
|
|
|
|
// Parse the config file
|
|
c, err := os.ReadFile(options.Config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = yaml.Unmarshal(c, &devconfig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
watcherEngine, err := engine.NewEngineFromConfig(devconfig.Config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
signalHandler := signal.NewSignalHandler(func() {
|
|
stopChan <- struct{}{}
|
|
})
|
|
signalHandler.ExitMessage = func(sig os.Signal) string {
|
|
return ""
|
|
}
|
|
signalHandler.Start()
|
|
err = watcherEngine.Start()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
<-stopChan
|
|
return nil
|
|
}
|