1
0
mirror of https://github.com/schollz/croc.git synced 2024-12-18 11:11:29 +03:00

Merge pull request #685 from a1lu/config_files

Gracefully handle non existend receive config file
This commit is contained in:
Zack 2024-03-31 12:08:50 -07:00 committed by GitHub
commit 8b4ab4c86c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 12 deletions

View File

@ -153,7 +153,7 @@ func setDebugLevel(c *cli.Context) {
} }
} }
func getConfigFile() string { func getSendConfigFile() string {
configFile, err := utils.GetConfigDir() configFile, err := utils.GetConfigDir()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
@ -162,6 +162,15 @@ func getConfigFile() string {
return path.Join(configFile, "send.json") return path.Join(configFile, "send.json")
} }
func getReceiveConfigFile() (string, error) {
configFile, err := utils.GetConfigDir()
if err != nil {
log.Error(err)
return "", err
}
return path.Join(configFile, "receive.json"), nil
}
func determinePass(c *cli.Context) (pass string) { func determinePass(c *cli.Context) (pass string) {
pass = c.String("pass") pass = c.String("pass")
b, err := os.ReadFile(pass) b, err := os.ReadFile(pass)
@ -219,7 +228,7 @@ func send(c *cli.Context) (err error) {
} else if crocOptions.RelayAddress6 != models.DEFAULT_RELAY6 { } else if crocOptions.RelayAddress6 != models.DEFAULT_RELAY6 {
crocOptions.RelayAddress = "" crocOptions.RelayAddress = ""
} }
b, errOpen := os.ReadFile(getConfigFile()) b, errOpen := os.ReadFile(getSendConfigFile())
if errOpen == nil && !c.Bool("remember") { if errOpen == nil && !c.Bool("remember") {
var rememberedOptions croc.Options var rememberedOptions croc.Options
err = json.Unmarshal(b, &rememberedOptions) err = json.Unmarshal(b, &rememberedOptions)
@ -355,7 +364,7 @@ func makeTempFileWithString(s string) (fnames []string, err error) {
func saveConfig(c *cli.Context, crocOptions croc.Options) { func saveConfig(c *cli.Context, crocOptions croc.Options) {
if c.Bool("remember") { if c.Bool("remember") {
configFile := getConfigFile() configFile := getSendConfigFile()
log.Debug("saving config file") log.Debug("saving config file")
var bConfig []byte var bConfig []byte
// if the code wasn't set, don't save it // if the code wasn't set, don't save it
@ -443,12 +452,11 @@ func receive(c *cli.Context) (err error) {
// load options here // load options here
setDebugLevel(c) setDebugLevel(c)
configFile, err := utils.GetConfigDir()
if err != nil { configFile, err := getReceiveConfigFile()
log.Error(err) if err != nil && c.Bool("remember") {
return return
} }
configFile = path.Join(configFile, "receive.json")
b, errOpen := os.ReadFile(configFile) b, errOpen := os.ReadFile(configFile)
if errOpen == nil && !c.Bool("remember") { if errOpen == nil && !c.Bool("remember") {
var rememberedOptions croc.Options var rememberedOptions croc.Options

View File

@ -32,16 +32,15 @@ const NbBytesWords = 4
// Get or create home directory // Get or create home directory
func GetConfigDir() (homedir string, err error) { func GetConfigDir() (homedir string, err error) {
homedir, err = os.UserHomeDir()
if err != nil {
return
}
if envHomedir, isSet := os.LookupEnv("CROC_CONFIG_DIR"); isSet { if envHomedir, isSet := os.LookupEnv("CROC_CONFIG_DIR"); isSet {
homedir = envHomedir homedir = envHomedir
} else if xdgConfigHome, isSet := os.LookupEnv("XDG_CONFIG_HOME"); isSet { } else if xdgConfigHome, isSet := os.LookupEnv("XDG_CONFIG_HOME"); isSet {
homedir = path.Join(xdgConfigHome, "croc") homedir = path.Join(xdgConfigHome, "croc")
} else { } else {
homedir, err = os.UserHomeDir()
if err != nil {
return
}
homedir = path.Join(homedir, ".config", "croc") homedir = path.Join(homedir, ".config", "croc")
} }