ui.Pages.AddAndSwitchToPage("trackerList", ui.trackerList, true)
}).
AddItem("Settings", "", 's', func() {
- //ui.Pages.AddPage("settings", ui.renderSettingsForm(), true, false)
-
ui.Pages.AddPage("settings", ui.renderSettingsForm(), true, true)
}).
AddItem("Quit", "", 'q', func() {
}
// Show Logs
if event.Key() == tcell.KeyCtrlL {
- //curPage, _ := ui.Pages.GetFrontPage()
ui.HLClient.DebugBuf.TextView.ScrollToEnd()
ui.HLClient.DebugBuf.TextView.SetBorder(true).SetTitle("Logs")
ui.HLClient.DebugBuf.TextView.SetDoneFunc(func(key tcell.Key) {
if key == tcell.KeyEscape {
- //ui.Pages.SwitchToPage("serverUI")
ui.Pages.RemovePage("logs")
}
})
})
if err := ui.App.SetRoot(ui.Pages, true).SetFocus(ui.Pages).Run(); err != nil {
- panic(err)
+ ui.App.Stop()
+ os.Exit(1)
}
}
"github.com/rivo/tview"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
+ "log"
"os"
"os/signal"
"syscall"
- "time"
)
-//var defaultTrackerList = []string{
-// "hltracker.com:5498",
-//}
-
-const connectTimeout = 3 * time.Second
-
func main() {
_, cancelRoot := context.WithCancel(context.Background())
version := flag.Bool("version", false, "print version and exit")
logLevel := flag.String("log-level", "info", "Log level")
- userName := flag.String("name", "unnamed", "User name")
- //srvAddr := flag.String("server", "localhost:5500", "Hostname/Port of server")
- //login := flag.String("login", "guest", "Login Name")
- //pass := flag.String("password", "", "Login Password")
+ logFile := flag.String("log-file", "", "output logs to file")
+
flag.Parse()
if *version {
TextView: tview.NewTextView(),
}
- cores := []zapcore.Core{
- newDebugCore(zapLvl, db),
- //newStderrCore(zapLvl),
+ cores := []zapcore.Core{newZapCore(zapLvl, db)}
+
+ // Add file logger if optional log-file flag was passed
+ if *logFile != "" {
+ f, err := os.OpenFile(*logFile,
+ os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
+ if err != nil {
+ log.Println(err)
+ }
+ defer f.Close()
+ if err != nil {
+ panic(err)
+ }
+ cores = append(cores, newZapCore(zapLvl, f))
}
+
l := zap.New(zapcore.NewTee(cores...))
defer func() { _ = l.Sync() }()
logger := l.Sugar()
cancelRoot()
}()
- client := hotline.NewClient(*userName, logger)
+ client := hotline.NewClient("", logger)
client.DebugBuf = db
client.UI.Start()
}
-func newDebugCore(level zapcore.Level, db *hotline.DebugBuffer) zapcore.Core {
- encoderCfg := zap.NewProductionEncoderConfig()
- encoderCfg.TimeKey = "timestamp"
- encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder
-
- return zapcore.NewCore(
- zapcore.NewConsoleEncoder(encoderCfg),
- zapcore.Lock(db),
- level,
- )
-}
-
-func newStderrCore(level zapcore.Level) zapcore.Core {
+func newZapCore(level zapcore.Level, syncer zapcore.WriteSyncer) zapcore.Core {
encoderCfg := zap.NewProductionEncoderConfig()
encoderCfg.TimeKey = "timestamp"
encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder
return zapcore.NewCore(
zapcore.NewConsoleEncoder(encoderCfg),
- zapcore.Lock(os.Stderr),
+ zapcore.Lock(syncer),
level,
)
}