]> git.r.bdr.sh - rbdr/mobius/commitdiff
Add per-OS default config path to accomodate Windows
authorJeff Halter <redacted>
Thu, 29 Jul 2021 01:17:13 +0000 (18:17 -0700)
committerJeff Halter <redacted>
Thu, 29 Jul 2021 01:17:13 +0000 (18:17 -0700)
client/main.go
hotline/client.go

index 3ce4c7ed142a73f251c094a75674fbad44625dad..ec6f8951eb0380868e6209e0179f2958d9ac988f 100644 (file)
@@ -11,10 +11,10 @@ import (
        "log"
        "os"
        "os/signal"
+       "runtime"
        "syscall"
 )
 
-
 func main() {
        _, cancelRoot := context.WithCancel(context.Background())
 
@@ -70,7 +70,9 @@ func main() {
                cancelRoot()
        }()
 
-       client := hotline.NewClient("", logger)
+       cfgPath := defaultConfigPath()
+
+       client := hotline.NewClient(cfgPath, logger)
        client.DebugBuf = db
        client.UI.Start()
 
@@ -94,3 +96,19 @@ var zapLogLevel = map[string]zapcore.Level{
        "warn":  zap.WarnLevel,
        "error": zap.ErrorLevel,
 }
+
+func defaultConfigPath() (cfgPath string) {
+       os := runtime.GOOS
+       switch os {
+       case "windows":
+               cfgPath = "mobius-client-config.yaml"
+       case "darwin":
+               cfgPath = "/usr/local/etc/mobius-client-config.yaml"
+       case "linux":
+               cfgPath = "/usr/local/etc/mobius-client-config.yaml"
+       default:
+               fmt.Printf("unsupported OS")
+       }
+
+       return cfgPath
+}
index f73e37abbbaf7dd3e52546df706d7a11dcbc6fde..35ec7fb488015c2c4ae00179cfea4468d8d53193 100644 (file)
@@ -22,7 +22,6 @@ import (
        "time"
 )
 
-const clientConfigPath = "/usr/local/etc/mobius-client-config.yaml"
 const (
        trackerListPage = "trackerList"
 )
@@ -66,6 +65,7 @@ func readConfig(cfgPath string) (*ClientPrefs, error) {
 }
 
 type Client struct {
+       cfgPath     string
        DebugBuf    *DebugBuffer
        Connection  net.Conn
        Login       *[]byte
@@ -234,7 +234,11 @@ func (ui *UI) renderSettingsForm() *tview.Flex {
                        // TODO: handle err
                }
                // TODO: handle err
-               _ = ioutil.WriteFile(clientConfigPath, out, 0666)
+               err = ioutil.WriteFile(ui.HLClient.cfgPath, out, 0666)
+               if err != nil {
+                       println(ui.HLClient.cfgPath)
+                       panic(err)
+               }
                ui.Pages.RemovePage("settings")
        })
        settingsForm.SetBorder(true)
@@ -551,17 +555,19 @@ func (ui *UI) Start() {
        }
 }
 
-func NewClient(username string, logger *zap.SugaredLogger) *Client {
+func NewClient(cfgPath string, logger *zap.SugaredLogger) *Client {
        c := &Client{
+               cfgPath:     cfgPath,
                Logger:      logger,
                activeTasks: make(map[uint32]*Transaction),
                Handlers:    clientHandlers,
        }
        c.UI = NewUI(c)
 
-       prefs, err := readConfig(clientConfigPath)
+       prefs, err := readConfig(cfgPath)
        if err != nil {
-               return c
+               fmt.Printf("unable to read config file")
+               logger.Fatal("unable to read config file", "path", cfgPath)
        }
        c.pref = prefs