github.com/Finschia/finschia-sdk@v0.49.1/client/keys/delete.go (about)

     1  package keys
     2  
     3  import (
     4  	"bufio"
     5  
     6  	"github.com/spf13/cobra"
     7  
     8  	"github.com/Finschia/finschia-sdk/client"
     9  	"github.com/Finschia/finschia-sdk/client/input"
    10  	"github.com/Finschia/finschia-sdk/crypto/keyring"
    11  )
    12  
    13  const (
    14  	flagYes   = "yes"
    15  	flagForce = "force"
    16  )
    17  
    18  // DeleteKeyCommand deletes a key from the key store.
    19  func DeleteKeyCommand() *cobra.Command {
    20  	cmd := &cobra.Command{
    21  		Use:   "delete <name>...",
    22  		Short: "Delete the given keys",
    23  		Long: `Delete keys from the Keybase backend.
    24  
    25  Note that removing offline or ledger keys will remove
    26  only the public key references stored locally, i.e.
    27  private keys stored in a ledger device cannot be deleted with the CLI.
    28  `,
    29  		Args: cobra.MinimumNArgs(1),
    30  		RunE: func(cmd *cobra.Command, args []string) error {
    31  			buf := bufio.NewReader(cmd.InOrStdin())
    32  			clientCtx, err := client.GetClientQueryContext(cmd)
    33  			if err != nil {
    34  				return err
    35  			}
    36  
    37  			for _, name := range args {
    38  				info, err := clientCtx.Keyring.Key(name)
    39  				if err != nil {
    40  					cmd.PrintErrf("key %s not found\n", name)
    41  					continue
    42  				}
    43  
    44  				// confirm deletion, unless -y is passed
    45  				if skip, _ := cmd.Flags().GetBool(flagYes); !skip {
    46  					if yes, err := input.GetConfirmation("Key reference will be deleted. Continue?", buf, cmd.ErrOrStderr()); err != nil {
    47  						return err
    48  					} else if !yes {
    49  						continue
    50  					}
    51  				}
    52  
    53  				if err := clientCtx.Keyring.Delete(name); err != nil {
    54  					return err
    55  				}
    56  
    57  				if info.GetType() == keyring.TypeLedger || info.GetType() == keyring.TypeOffline {
    58  					cmd.PrintErrln("Public key reference deleted")
    59  					continue
    60  				}
    61  				cmd.PrintErrln("Key deleted forever (uh oh!)")
    62  			}
    63  
    64  			return nil
    65  		},
    66  	}
    67  
    68  	cmd.Flags().BoolP(flagYes, "y", false, "Skip confirmation prompt when deleting offline or ledger key references")
    69  	cmd.Flags().BoolP(flagForce, "f", false, "Remove the key unconditionally without asking for the passphrase. Deprecated.")
    70  
    71  	return cmd
    72  }