Files
VRCWT-OSC/cmd/vrc_osc/main.go
2026-06-26 09:16:46 +09:00

56 lines
1.4 KiB
Go

package main
import (
"flag"
"log"
"os"
"os/exec"
"path/filepath"
"vrc_osc_go/internal/app"
"vrc_osc_go/internal/buildinfo"
)
func main() {
log.Printf("vrc_osc version=%s build=%s", buildinfo.Version, buildinfo.BuildTime)
log.Printf("runtime main begin")
var configPath string
var mode string
var noGUI bool
flag.StringVar(&configPath, "config", "config/config.toml", "path to config.toml")
flag.StringVar(&mode, "mode", "", "generate-json or extract-log")
flag.BoolVar(&noGUI, "no-gui", false, "do not launch the GUI companion")
flag.Parse()
if mode == "" && !noGUI {
log.Printf("launching gui companion")
launchGUI()
}
log.Printf("calling app.Run config=%s mode=%s noGUI=%v", configPath, mode, noGUI)
if err := app.Run(configPath, mode); err != nil {
log.SetOutput(os.Stderr)
log.Fatalf("vrc_osc_go: %v", err)
}
log.Printf("app.Run returned cleanly")
}
func launchGUI() {
exe, err := os.Executable()
if err != nil {
log.Printf("launchGUI: os.Executable failed: %v", err)
return
}
gui := filepath.Join(filepath.Dir(exe), "vrc_osc_gui.exe")
log.Printf("launchGUI: exe=%s gui=%s", exe, gui)
if _, err := os.Stat(gui); err != nil {
log.Printf("launchGUI: gui missing: %v", err)
return
}
if err := exec.Command(gui).Start(); err != nil {
log.Printf("launchGUI: start failed: %v", err)
return
}
log.Printf("launchGUI: started gui companion")
}