diff --git a/cmd/config.go b/cmd/config.go index 530dc6e..dc28dd7 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -19,6 +19,7 @@ package cmd import ( "fmt" "os" + fp "path/filepath" "codeberg.org/danjones000/my-log/config" "github.com/spf13/cobra" @@ -30,22 +31,28 @@ var configCmd = &cobra.Command{ Short: "Save default config to file", //Long: ``, SilenceUsage: true, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(cmd *cobra.Command, args []string) (err error) { force, _ := cmd.Flags().GetBool("force") if !force { - _, err := os.Stat(config.ConfigPath) + _, err = os.Stat(config.ConfigPath) if !os.IsNotExist(err) { return fmt.Errorf("%s already exists. Use -f to overwrite", config.ConfigPath) } } + dir := fp.Dir(config.ConfigPath) + err = os.MkdirAll(dir, 0755) + if err != nil { + return + } + f, err := os.Create(config.ConfigPath) if err != nil { - return err + return } defer f.Close() c := config.DefaultStr() fmt.Fprint(f, c) - return nil + return }, }