github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/client/keys/delete.go (about)

     1  package keys
     2  
     3  import (
     4  	"bufio"
     5  	"errors"
     6  
     7  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/flags"
     8  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/input"
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/crypto/keys"
    10  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    11  
    12  	"github.com/spf13/cobra"
    13  	"github.com/spf13/viper"
    14  )
    15  
    16  const (
    17  	flagYes   = "yes"
    18  	flagForce = "force"
    19  )
    20  
    21  // DeleteKeyCommand deletes a key from the key store.
    22  func DeleteKeyCommand() *cobra.Command {
    23  	cmd := &cobra.Command{
    24  		Use:   "delete <name>...",
    25  		Short: "Delete the given keys",
    26  		Long: `Delete keys from the Keybase backend.
    27  
    28  Note that removing offline or ledger keys will remove
    29  only the public key references stored locally, i.e.
    30  private keys stored in a ledger device cannot be deleted with the CLI.
    31  `,
    32  		RunE: runDeleteCmd,
    33  		Args: cobra.MinimumNArgs(1),
    34  	}
    35  
    36  	cmd.Flags().BoolP(flagYes, "y", false,
    37  		"Skip confirmation prompt when deleting offline or ledger key references")
    38  	cmd.Flags().BoolP(flagForce, "f", false,
    39  		"Remove the key unconditionally without asking for the passphrase. Deprecated.")
    40  	return cmd
    41  }
    42  
    43  func runDeleteCmd(cmd *cobra.Command, args []string) error {
    44  	buf := bufio.NewReader(cmd.InOrStdin())
    45  
    46  	kb, err := keys.NewKeyring(sdk.KeyringServiceName(), viper.GetString(flags.FlagKeyringBackend), viper.GetString(flags.FlagHome), buf)
    47  	if err != nil {
    48  		return err
    49  	}
    50  
    51  	for _, name := range args {
    52  		info, err := kb.Get(name)
    53  		if err != nil {
    54  			return err
    55  		}
    56  
    57  		if info.GetType() == keys.TypeLedger || info.GetType() == keys.TypeOffline {
    58  			// confirm deletion, unless -y is passed
    59  			if !viper.GetBool(flagYes) {
    60  				if err := confirmDeletion(buf); err != nil {
    61  					return err
    62  				}
    63  			}
    64  
    65  			if err := kb.Delete(name, "", true); err != nil {
    66  				return err
    67  			}
    68  			cmd.PrintErrln("Public key reference deleted")
    69  			return nil
    70  		}
    71  
    72  		// old password and skip flag arguments are ignored
    73  		if err := kb.Delete(name, "", true); err != nil {
    74  			return err
    75  		}
    76  		cmd.PrintErrln("Key deleted forever (uh oh!)")
    77  	}
    78  
    79  	return nil
    80  }
    81  
    82  func confirmDeletion(buf *bufio.Reader) error {
    83  	answer, err := input.GetConfirmation("Key reference will be deleted. Continue?", buf)
    84  	if err != nil {
    85  		return err
    86  	}
    87  	if !answer {
    88  		return errors.New("aborted")
    89  	}
    90  	return nil
    91  }