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

     1  package keys
     2  
     3  import (
     4  	"bufio"
     5  
     6  	"github.com/Finschia/finschia-sdk/client"
     7  	"github.com/Finschia/finschia-sdk/client/input"
     8  	"github.com/Finschia/finschia-sdk/crypto/keyring"
     9  
    10  	"github.com/spf13/cobra"
    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  					return err
    41  				}
    42  
    43  				// confirm deletion, unless -y is passed
    44  				if skip, _ := cmd.Flags().GetBool(flagYes); !skip {
    45  					if yes, err := input.GetConfirmation("Key reference will be deleted. Continue?", buf, cmd.ErrOrStderr()); err != nil {
    46  						return err
    47  					} else if !yes {
    48  						continue
    49  					}
    50  				}
    51  
    52  				if err := clientCtx.Keyring.Delete(name); err != nil {
    53  					return err
    54  				}
    55  
    56  				if info.GetType() == keyring.TypeLedger || info.GetType() == keyring.TypeOffline {
    57  					cmd.PrintErrln("Public key reference deleted")
    58  					continue
    59  				}
    60  				cmd.PrintErrln("Key deleted forever (uh oh!)")
    61  			}
    62  
    63  			return nil
    64  		},
    65  	}
    66  
    67  	cmd.Flags().BoolP(flagYes, "y", false, "Skip confirmation prompt when deleting offline or ledger key references")
    68  	cmd.Flags().BoolP(flagForce, "f", false, "Remove the key unconditionally without asking for the passphrase. Deprecated.")
    69  
    70  	return cmd
    71  }