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 }