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  }