diff --git a/cmd/wallet/create.go b/cmd/wallet/create.go index 853defca..937e8ed5 100644 --- a/cmd/wallet/create.go +++ b/cmd/wallet/create.go @@ -20,13 +20,16 @@ var createCmd = &cobra.Command{ Args: cobra.MaximumNArgs(1), Run: func(_ *cobra.Command, args []string) { cfg := config.Global() - name := "account-1" - if len(args) > 0 { + + var name string + switch len(args) { + case 0: + name = generateAccountName(cfg) + default: name = args[0] + checkAccountExists(cfg, name) } - checkAccountExists(cfg, name) - af, err := wallet.Load(accKind) cobra.CheckErr(err) @@ -50,6 +53,19 @@ var createCmd = &cobra.Command{ }, } +func generateAccountName(cfg *config.Config) string { + for i := 1; ; i++ { + name := fmt.Sprintf("account_%d", i) + if _, ok := cfg.Wallet.All[name]; ok { + continue + } + if _, ok := cfg.AddressBook.All[name]; ok { + continue + } + return name + } +} + func checkAccountExists(cfg *config.Config, name string) { if _, exists := cfg.Wallet.All[name]; exists { cobra.CheckErr(fmt.Errorf("account '%s' already exists in the wallet", name))