Files
VRCWT-OSC/VRWT_Tool/VRC_OSC/internal/app/app.go
2026-06-24 00:43:46 +09:00

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
}
}