aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2024-06-15 11:13:16 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2024-06-15 11:13:16 -0700
commit95159e5585762c06c654945070ba54262b7dcec9 (patch)
tree23609018c1460b056ce22067290ea12ee851d483 /cmd
parenta6216dd89252fa01dc176f98f1e4ecfd3f637566 (diff)
Refactoring and cleanup
* Split CLI client into separate project * Convert more functions to follow common Golang idioms e.g io.Reader, io.Writer * Use ldflags for versioning * Misc cleanup and simplification
Diffstat (limited to 'cmd')
-rw-r--r--cmd/mobius-hotline-client/main.go87
-rw-r--r--cmd/mobius-hotline-client/mobius-client-config.yaml8
-rw-r--r--cmd/mobius-hotline-server/main.go12
3 files changed, 9 insertions, 98 deletions
diff --git a/cmd/mobius-hotline-client/main.go b/cmd/mobius-hotline-client/main.go
deleted file mode 100644
index 20bd7f2..0000000
--- a/cmd/mobius-hotline-client/main.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package main
-
-import (
- "context"
- "flag"
- "fmt"
- "github.com/jhalter/mobius/hotline"
- "github.com/rivo/tview"
- "log/slog"
- "os"
- "os/signal"
- "runtime"
- "syscall"
-)
-
-var logLevels = map[string]slog.Level{
- "debug": slog.LevelDebug,
- "info": slog.LevelInfo,
- "warn": slog.LevelWarn,
- "error": slog.LevelError,
-}
-
-func main() {
- _, cancelRoot := context.WithCancel(context.Background())
-
- sigChan := make(chan os.Signal, 1)
- signal.Notify(sigChan, syscall.SIGTERM, syscall.SIGINT, os.Interrupt)
-
- configDir := flag.String("config", defaultConfigPath(), "Path to config root")
- version := flag.Bool("version", false, "print version and exit")
- logLevel := flag.String("log-level", "info", "Log level")
- logFile := flag.String("log-file", "", "output logs to file")
-
- flag.Parse()
-
- if *version {
- fmt.Printf("v%s\n", hotline.VERSION)
- os.Exit(0)
- }
-
- // init DebugBuffer
- db := &hotline.DebugBuffer{
- TextView: tview.NewTextView(),
- }
-
- // 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)
- defer func() { _ = f.Close() }()
- if err != nil {
- panic(err)
- }
- }
-
- logger := slog.New(slog.NewTextHandler(db, &slog.HandlerOptions{Level: logLevels[*logLevel]}))
- logger.Info("Started Mobius client", "Version", hotline.VERSION)
-
- go func() {
- sig := <-sigChan
- logger.Info("Stopping client", "signal", sig.String())
- cancelRoot()
- }()
-
- client := hotline.NewUIClient(*configDir, logger)
- client.DebugBuf = db
- client.UI.Start()
-}
-
-func defaultConfigPath() (cfgPath string) {
- switch runtime.GOOS {
- case "windows":
- cfgPath = "mobius-client-config.yaml"
- case "darwin":
- if _, err := os.Stat("/usr/local/etc/mobius-client-config.yaml"); err == nil {
- cfgPath = "/usr/local/etc/mobius-client-config.yaml"
- } else if _, err := os.Stat("/opt/homebrew/etc/mobius-client-config.yaml"); err == nil {
- cfgPath = "/opt/homebrew/etc/mobius-client-config.yaml"
- }
- case "linux":
- cfgPath = "/usr/local/etc/mobius-client-config.yaml"
- default:
- fmt.Printf("unsupported OS")
- }
-
- return cfgPath
-}
diff --git a/cmd/mobius-hotline-client/mobius-client-config.yaml b/cmd/mobius-hotline-client/mobius-client-config.yaml
deleted file mode 100644
index b1edb40..0000000
--- a/cmd/mobius-hotline-client/mobius-client-config.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-Username: unnamed
-IconID: 414
-Tracker: hltracker.com:5498
-Bookmarks:
- - Name: The Mobius Strip
- Addr: trtphotl.com:5500
- Login: guest
- Password: "" \ No newline at end of file
diff --git a/cmd/mobius-hotline-server/main.go b/cmd/mobius-hotline-server/main.go
index c027d18..8e66938 100644
--- a/cmd/mobius-hotline-server/main.go
+++ b/cmd/mobius-hotline-server/main.go
@@ -28,6 +28,12 @@ var logLevels = map[string]slog.Level{
"error": slog.LevelError,
}
+var (
+ version = "dev"
+ commit = "none"
+ date = "unknown"
+)
+
func main() {
ctx, cancel := context.WithCancel(context.Background())
@@ -50,7 +56,7 @@ func main() {
basePort := flag.Int("bind", defaultPort, "Base Hotline server port. File transfer port is base port + 1.")
statsPort := flag.String("stats-port", "", "Enable stats HTTP endpoint on address and port")
configDir := flag.String("config", defaultConfigPath(), "Path to config root")
- version := flag.Bool("version", false, "print version and exit")
+ printVersion := flag.Bool("version", false, "print version and exit")
logLevel := flag.String("log-level", "info", "Log level")
logFile := flag.String("log-file", "", "Path to log file")
@@ -58,8 +64,8 @@ func main() {
flag.Parse()
- if *version {
- fmt.Printf("v%s\n", hotline.VERSION)
+ if *printVersion {
+ fmt.Printf("mobius-hotline-server %s, commit %s, built at %s", version, commit, date)
os.Exit(0)
}