diff --git a/pkg/chirp/client.go b/pkg/chirp/client.go index 8c09695..c50e37e 100644 --- a/pkg/chirp/client.go +++ b/pkg/chirp/client.go @@ -67,7 +67,7 @@ func (c *ClipboardClient) Paste() error { return fmt.Errorf("could not send paste command: %w", err) } - fmt.Print(response.Contents) + fmt.Fprint(os.Stdout, response.Contents) return nil } diff --git a/pkg/command/client.go b/pkg/command/client.go index ce97ed7..0cfff94 100644 --- a/pkg/command/client.go +++ b/pkg/command/client.go @@ -1,6 +1,7 @@ package command import ( + "errors" "fmt" "github.com/oclaussen/chirp/pkg/chirp" @@ -42,7 +43,8 @@ func withClient(f func(*chirp.ClipboardClient) error) error { viper.SetConfigName("client") if err := viper.ReadInConfig(); err != nil { - if _, ok := err.(viper.ConfigFileNotFoundError); ok { + var e *viper.ConfigFileNotFoundError + if errors.As(err, &e) { log.Warn("no configuration file found: %w") } else { return fmt.Errorf("could not read config file: %w", err) diff --git a/pkg/command/configure.go b/pkg/command/configure.go index f209930..ff83080 100644 --- a/pkg/command/configure.go +++ b/pkg/command/configure.go @@ -24,6 +24,10 @@ func NewConfigureCommand() *cobra.Command { func Configure() error { appdir := filepath.Join(os.Getenv("HOME"), fmt.Sprintf(".%s", name)) + if err := os.MkdirAll(appdir, 0600); err != nil { + return fmt.Errorf("could not create config directory: %w", err) + } + u, err := url.Parse(viper.GetString(ConfKeyAddress)) if err != nil { return fmt.Errorf("invalid address: %w", err) diff --git a/pkg/command/server.go b/pkg/command/server.go index f1c857e..6c38389 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -1,6 +1,7 @@ package command import ( + "errors" "fmt" "github.com/oclaussen/chirp/pkg/chirp" @@ -30,7 +31,8 @@ func withServer(f func(*chirp.ClipboardServer) error) error { viper.SetConfigName("server") if err := viper.ReadInConfig(); err != nil { - if _, ok := err.(viper.ConfigFileNotFoundError); ok { + var e *viper.ConfigFileNotFoundError + if errors.As(err, &e) { log.Warn("no configuration file found: %w") } else { return fmt.Errorf("could not read config file: %w", err)