Skip to content

Commit f979062

Browse files
committed
Fix ssh config file auto-creation when missing
1 parent b257a57 commit f979062

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

main.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -261,11 +261,19 @@ func (c *Config) Save() {
261261
configDir, err := filepath.Abs(os.Getenv("HOME") + "/.ssh/config")
262262
checkError(err)
263263

264-
_, err = os.Stat(configDir)
265-
checkError(err)
264+
// make sure dir exists
265+
dir := filepath.Dir(configDir)
266+
if _, err = os.Stat(dir); err != nil {
267+
os.MkdirAll(dir, os.ModePerm)
268+
}
266269

267-
err = os.Rename(configDir, configDir+string(time.Now().Format(time.RFC3339)))
268-
checkError(err)
270+
// backup old dir
271+
if _, err = os.Stat(configDir); err == nil {
272+
err = os.Rename(configDir, configDir+string(time.Now().Format(time.RFC3339)))
273+
if err != nil {
274+
log.Fatalf("Failed to rename old config file %v.\n", configDir)
275+
}
276+
}
269277

270278
f, err := os.OpenFile(configDir, os.O_RDWR|os.O_CREATE, 0755)
271279
checkError(err)

0 commit comments

Comments
 (0)