github.com/cosmos/cosmos-sdk@v0.50.10/client/keys/rename.go (about) 1 package keys 2 3 import ( 4 "bufio" 5 "fmt" 6 7 "github.com/spf13/cobra" 8 9 "github.com/cosmos/cosmos-sdk/client" 10 "github.com/cosmos/cosmos-sdk/client/input" 11 "github.com/cosmos/cosmos-sdk/crypto/keyring" 12 ) 13 14 // RenameKeyCommand renames a key from the key store. 15 func RenameKeyCommand() *cobra.Command { 16 cmd := &cobra.Command{ 17 Use: "rename <old_name> <new_name>", 18 Short: "Rename an existing key", 19 Long: `Rename a key from the Keybase backend. 20 21 Note that renaming offline or ledger keys will rename 22 only the public key references stored locally, i.e. 23 private keys stored in a ledger device cannot be renamed with the CLI. 24 `, 25 Args: cobra.ExactArgs(2), 26 RunE: func(cmd *cobra.Command, args []string) error { 27 buf := bufio.NewReader(cmd.InOrStdin()) 28 clientCtx, err := client.GetClientQueryContext(cmd) 29 if err != nil { 30 return err 31 } 32 33 oldName, newName := args[0], args[1] 34 35 k, err := clientCtx.Keyring.Key(oldName) 36 if err != nil { 37 return err 38 } 39 40 // confirm rename, unless -y is passed 41 if skip, _ := cmd.Flags().GetBool(flagYes); !skip { 42 prompt := fmt.Sprintf("Key reference will be renamed from %s to %s. Continue?", args[0], args[1]) 43 if yes, err := input.GetConfirmation(prompt, buf, cmd.ErrOrStderr()); err != nil { 44 return err 45 } else if !yes { 46 return nil 47 } 48 } 49 50 if err := clientCtx.Keyring.Rename(oldName, newName); err != nil { 51 return err 52 } 53 54 if k.GetType() == keyring.TypeLedger || k.GetType() == keyring.TypeOffline { 55 cmd.PrintErrln("Public key reference renamed") 56 return nil 57 } 58 59 cmd.PrintErrln(fmt.Sprintf("Key was successfully renamed from %s to %s", oldName, newName)) 60 61 return nil 62 }, 63 } 64 65 cmd.Flags().BoolP(flagYes, "y", false, "Skip confirmation prompt when renaming offline or ledger key references") 66 67 return cmd 68 }