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 }