feat(config): add config init subcommand with --new flag
This commit is contained in:
parent
6bba227654
commit
db607ac696
2 changed files with 55 additions and 0 deletions
|
|
@ -2,8 +2,11 @@ package cmd
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
|
@ -64,8 +67,50 @@ var configPathCmd = &cobra.Command{
|
|||
},
|
||||
}
|
||||
|
||||
func writeConfigFile(cfg Config) error {
|
||||
p, err := configPath()
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot determine config path: %w", err)
|
||||
}
|
||||
if err := os.MkdirAll(filepath.Dir(p), 0o750); err != nil {
|
||||
return fmt.Errorf("cannot create config directory: %w", err)
|
||||
}
|
||||
f, err := os.Create(p)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot write config: %w", err)
|
||||
}
|
||||
defer f.Close()
|
||||
enc := toml.NewEncoder(f)
|
||||
return enc.Encode(cfg)
|
||||
}
|
||||
|
||||
var configInitCmd = &cobra.Command{
|
||||
Use: "init",
|
||||
Short: "Generate default config file",
|
||||
Args: cobra.NoArgs,
|
||||
SilenceUsage: true,
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
p, err := configPath()
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot determine config path: %w", err)
|
||||
}
|
||||
newFlag, _ := cmd.Flags().GetBool("new")
|
||||
if !newFlag {
|
||||
if _, err := os.Stat(p); err == nil {
|
||||
return withHint(
|
||||
fmt.Errorf("config file already exists"),
|
||||
"use 'pda config edit' or 'pda config init --new'",
|
||||
)
|
||||
}
|
||||
}
|
||||
return writeConfigFile(defaultConfig())
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
configInitCmd.Flags().Bool("new", false, "overwrite existing config file")
|
||||
configCmd.AddCommand(configGetCmd)
|
||||
configCmd.AddCommand(configInitCmd)
|
||||
configCmd.AddCommand(configListCmd)
|
||||
configCmd.AddCommand(configPathCmd)
|
||||
rootCmd.AddCommand(configCmd)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue