42 lines
775 B
Go
42 lines
775 B
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"vrc_osc_go/internal/config"
|
|
"vrc_osc_go/internal/consenttool"
|
|
"vrc_osc_go/internal/osc"
|
|
)
|
|
|
|
func Run(configPath string, mode string) error {
|
|
if mode != "" {
|
|
return consenttool.Run(configPath, mode)
|
|
}
|
|
|
|
cfg, err := config.Load(configPath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
server := osc.NewServer(cfg.OSC.Host, cfg.OSC.Port)
|
|
server.Map("DiscordSend", func(_ string, args []osc.Value) error {
|
|
return fmt.Errorf("discord mute not implemented yet")
|
|
})
|
|
|
|
errCh := make(chan error, 1)
|
|
go func() { errCh <- server.Serve() }()
|
|
|
|
sigCh := make(chan os.Signal, 1)
|
|
signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
|
|
select {
|
|
case err := <-errCh:
|
|
return err
|
|
case <-sigCh:
|
|
server.Close()
|
|
return nil
|
|
}
|
|
}
|