diff --git a/configdir_darwin.go b/configdir_darwin.go index b5d4f86..2a4198b 100644 --- a/configdir_darwin.go +++ b/configdir_darwin.go @@ -1,15 +1,21 @@ package main import ( - "os/user" + "os" "path/filepath" ) -func configDir() string { - usr, err := user.Current() - if err != nil { - return "" +func getHomeDir() (homeDir string) { + homeDir = os.Getenv("HOME") + if homeDir == "" { + homeDir = getInput("Path to home directory", false) } - return filepath.Join(usr.HomeDir, ".config") + return +} + +func getConfigDir() (configDir string) { + configDir = filepath.Join(getHomeDir(), ".config") + + return } diff --git a/configdir_freebsd.go b/configdir_freebsd.go index 70893e6..2a4198b 100644 --- a/configdir_freebsd.go +++ b/configdir_freebsd.go @@ -2,20 +2,20 @@ package main import ( "os" - "os/user" "path/filepath" ) -func configDir() string { - confDir := os.Getenv("XDG_CONFIG_HOME") - if confDir != "" { - return confDir +func getHomeDir() (homeDir string) { + homeDir = os.Getenv("HOME") + if homeDir == "" { + homeDir = getInput("Path to home directory", false) } - usr, err := user.Current() - if err != nil { - return "" - } + return +} + +func getConfigDir() (configDir string) { + configDir = filepath.Join(getHomeDir(), ".config") - return filepath.Join(usr.HomeDir, ".config") + return } diff --git a/configdir_linux.go b/configdir_linux.go index 70893e6..2a4198b 100644 --- a/configdir_linux.go +++ b/configdir_linux.go @@ -2,20 +2,20 @@ package main import ( "os" - "os/user" "path/filepath" ) -func configDir() string { - confDir := os.Getenv("XDG_CONFIG_HOME") - if confDir != "" { - return confDir +func getHomeDir() (homeDir string) { + homeDir = os.Getenv("HOME") + if homeDir == "" { + homeDir = getInput("Path to home directory", false) } - usr, err := user.Current() - if err != nil { - return "" - } + return +} + +func getConfigDir() (configDir string) { + configDir = filepath.Join(getHomeDir(), ".config") - return filepath.Join(usr.HomeDir, ".config") + return } diff --git a/configdir_openbsd.go b/configdir_openbsd.go index 70893e6..2a4198b 100644 --- a/configdir_openbsd.go +++ b/configdir_openbsd.go @@ -2,20 +2,20 @@ package main import ( "os" - "os/user" "path/filepath" ) -func configDir() string { - confDir := os.Getenv("XDG_CONFIG_HOME") - if confDir != "" { - return confDir +func getHomeDir() (homeDir string) { + homeDir = os.Getenv("HOME") + if homeDir == "" { + homeDir = getInput("Path to home directory", false) } - usr, err := user.Current() - if err != nil { - return "" - } + return +} + +func getConfigDir() (configDir string) { + configDir = filepath.Join(getHomeDir(), ".config") - return filepath.Join(usr.HomeDir, ".config") + return } diff --git a/configdir_windows.go b/configdir_windows.go index 56d88f1..1de82aa 100644 --- a/configdir_windows.go +++ b/configdir_windows.go @@ -1,14 +1,22 @@ package main import ( - "os/user" + "os" ) -func configDir() string { - usr, err := user.Current() - if err != nil { - return "" +func getHomeDir() (homeDir string) { + homeDir = os.Getenv("HOMEPATH") + if homeDir == "" { + homeDir = getInput("Path to home directory", false) } - return usr.HomeDir + return +} + +func getConfigDir() (configDir string) { + configDir = os.Getenv("APPDATA") + if configDir == "" { + configDir = getInput("Path to config directory", false) + } + return } diff --git a/linx.go b/linx.go index 5256fe1..c131647 100644 --- a/linx.go +++ b/linx.go @@ -10,7 +10,6 @@ import ( "net/http" "net/url" "os" - "os/user" "path" "path/filepath" "strconv" @@ -190,7 +189,7 @@ func writeKeys() { } func parseConfig() { - cfgFilePath := filepath.Join(configDir(), "linx-client.conf") + cfgFilePath := filepath.Join(getConfigDir(), "linx-client.conf") cfg, err := config.LoadOrCreate(cfgFilePath) checkErr(err) @@ -202,8 +201,8 @@ func parseConfig() { fmt.Println("Configuring linx-client") fmt.Println() for Config.siteurl == "" { - fmt.Print("Site url (ex: https://linx.example.com/): ") - fmt.Scanf("%s", &Config.siteurl) + Config.siteurl = getInput("Site url (ex: https://linx.example.com/)", false) + if lastChar := Config.siteurl[len(Config.siteurl)-1:]; lastChar != "/" { Config.siteurl = Config.siteurl + "/" } @@ -211,21 +210,20 @@ func parseConfig() { cfg.SetValue("siteurl", Config.siteurl) for Config.logfile == "" { - fmt.Print("Logfile path (ex: ~/.linxlog): ") - fmt.Scanf("%s", &Config.logfile) + Config.logfile = getInput("Logfile path (ex: ~/.linxlog)", false) - usr, err := user.Current() - checkErr(err) + homeDir := getHomeDir() + if lastChar := homeDir[len(homeDir)-1:]; lastChar != "/" { + homeDir = homeDir + "/" + } - homedir := usr.HomeDir + "/" - Config.logfile = strings.Replace(Config.logfile, "~/", homedir, 1) + Config.logfile = strings.Replace(Config.logfile, "~/", homeDir, 1) } cfg.SetValue("logfile", Config.logfile) if Config.apikey == "" { - fmt.Print("API key (leave blank if instance is public): ") - fmt.Scanf("%s", &Config.apikey) + Config.apikey = getInput("API key (leave blank if instance is public)", true) } cfg.SetValue("apikey", Config.apikey) @@ -234,10 +232,3 @@ func parseConfig() { fmt.Printf("Configuration written at %s\n", cfgFilePath) } } - -func checkErr(err error) { - if err != nil { - fmt.Println(err) - os.Exit(1) - } -}