diff --git a/pkg/ssh/config.go b/pkg/ssh/config.go index 1eeb65a..51ccf61 100644 --- a/pkg/ssh/config.go +++ b/pkg/ssh/config.go @@ -80,7 +80,9 @@ func IncludeBunnyshellConfig() error { if isIncluded { return nil } - includeBunnyshellConfig(includeDirective) + if err := includeBunnyshellConfig(includeDirective); err != nil { + return err + } return nil } @@ -115,6 +117,10 @@ func includeBunnyshellConfig(includeDirective string) error { return err } + if err := ensureConfigFolder(); err != nil { + return err + } + file, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { return err @@ -134,6 +140,26 @@ func includeBunnyshellConfig(includeDirective string) error { return nil } +func ensureConfigFolder() error { + homeDir, err := os.UserHomeDir() + if err != nil { + return err + } + + folderPath := filepath.Join(homeDir, ".ssh") + + // Check if the folder exists + if _, err := os.Stat(folderPath); os.IsNotExist(err) { + // Folder does not exist, create it + err := os.Mkdir(folderPath, 0700) + if err != nil { + return fmt.Errorf("error creating .ssh folder: %w", err) + } + } + + return nil +} + func getConfigFilePath() (string, error) { homeDir, err := os.UserHomeDir() if err != nil {