108 lines
2.0 KiB
Go
108 lines
2.0 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"go_dreamfactory/cmd/v2/lib/common"
|
||
"go_dreamfactory/cmd/v2/service"
|
||
"go_dreamfactory/cmd/v2/service/observer"
|
||
"go_dreamfactory/cmd/v2/ui"
|
||
"io"
|
||
"os"
|
||
|
||
"fyne.io/fyne/v2/app"
|
||
"github.com/sirupsen/logrus"
|
||
)
|
||
|
||
var (
|
||
connService service.ConnService
|
||
pttService service.PttService
|
||
configService service.ConfigService
|
||
obs = observer.NewObserver()
|
||
logger *logrus.Logger
|
||
)
|
||
|
||
//
|
||
func init() {
|
||
var err error
|
||
|
||
if err = setupConfig(); err != nil {
|
||
fmt.Println(err)
|
||
os.Exit(1)
|
||
}
|
||
|
||
// initialize logger
|
||
if err = setupLogger(); err != nil {
|
||
fmt.Println(err)
|
||
os.Exit(1)
|
||
}
|
||
|
||
if err = setupWsConn(); err != nil {
|
||
fmt.Println(err)
|
||
os.Exit(1)
|
||
}
|
||
|
||
if err = setupPtt(); err != nil {
|
||
fmt.Println(err)
|
||
os.Exit(1)
|
||
}
|
||
}
|
||
|
||
func main() {
|
||
logrus.Info("Starting...")
|
||
|
||
// create a new ui
|
||
appUI := ui.NewUI(app.NewWithID("protocol-test-tool"), configService, connService, pttService, obs)
|
||
mainWindow := ui.NewMainWindow(appUI)
|
||
|
||
mainWindow.CreateWindow(common.APP_NAME, 1366, 768, true)
|
||
|
||
appUI.Run()
|
||
}
|
||
|
||
func setupPtt() (err error) {
|
||
pttService = service.NewPttService(connService)
|
||
return
|
||
}
|
||
|
||
func setupWsConn() (err error) {
|
||
connService = service.NewConnService(obs)
|
||
return
|
||
}
|
||
|
||
func setupConfig() (err error) {
|
||
configService, err = service.NewConfigService()
|
||
if err != nil {
|
||
return
|
||
}
|
||
if err = configService.ApplyConfig(); err != nil {
|
||
return
|
||
}
|
||
|
||
return
|
||
}
|
||
|
||
func setupLogger() (err error) {
|
||
logrus.SetFormatter(&logrus.TextFormatter{
|
||
DisableColors: true,
|
||
FullTimestamp: true,
|
||
})
|
||
|
||
logrus.SetLevel(logrus.DebugLevel)
|
||
logrus.SetOutput(os.Stdout)
|
||
|
||
//设置output,默认为stderr,可以为任何io.Writer,比如文件*os.File
|
||
file, err := os.OpenFile("robot_v2.log", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
|
||
writers := []io.Writer{
|
||
file,
|
||
os.Stdout}
|
||
|
||
//同时写文件和屏幕
|
||
fileAndStdoutWriter := io.MultiWriter(writers...)
|
||
if err == nil {
|
||
logrus.SetOutput(fileAndStdoutWriter)
|
||
} else {
|
||
logrus.Fatal("failed to log to file.")
|
||
}
|
||
return nil
|
||
}
|