From 59b5d6ab4da8d7a2bebaa2e1eb7b82cbce476503 Mon Sep 17 00:00:00 2001 From: Vedant Madane <6527493+VedantMadane@users.noreply.github.com> Date: Sat, 31 Jan 2026 00:09:26 +0530 Subject: [PATCH] feat(key): add 'ipfs key ls' as alias for 'ipfs key list' (#11147) * feat(key): add 'ipfs key ls' as alias for 'ipfs key list' Add 'ls' as an alias for the 'list' subcommand in 'ipfs key' to be consistent with other ipfs commands like 'ipfs repo ls' and 'ipfs pin ls' which use 'ls' instead of 'list'. Fixes #10976 Signed-off-by: Vedant Madane <6527493+VedantMadane@users.noreply.github.com> * feat(key): make 'ipfs key ls' canonical, deprecate 'list' aligns with other commands like 'ipfs pin ls' and 'ipfs files ls'. 'ipfs key list' still works but shows deprecation warning. * fix(key): correct --key option description in verify command was copy-pasted from sign command and said "signing" instead of "verifying" --------- Signed-off-by: Vedant Madane <6527493+VedantMadane@users.noreply.github.com> Co-authored-by: Marcin Rataj --- client/rpc/key.go | 2 +- core/commands/commands_test.go | 1 + core/commands/keystore.go | 20 ++++++++++++++++---- docs/changelogs/v0.40.md | 8 +++++--- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/client/rpc/key.go b/client/rpc/key.go index 710d9fb06..a38c0962a 100644 --- a/client/rpc/key.go +++ b/client/rpc/key.go @@ -101,7 +101,7 @@ func (api *KeyAPI) List(ctx context.Context) ([]iface.Key, error) { var out struct { Keys []keyOutput } - if err := api.core().Request("key/list").Exec(ctx, &out); err != nil { + if err := api.core().Request("key/ls").Exec(ctx, &out); err != nil { return nil, err } diff --git a/core/commands/commands_test.go b/core/commands/commands_test.go index 49e359e24..d4bad9601 100644 --- a/core/commands/commands_test.go +++ b/core/commands/commands_test.go @@ -106,6 +106,7 @@ func TestCommands(t *testing.T) { "/key/gen", "/key/import", "/key/list", + "/key/ls", "/key/rename", "/key/rm", "/key/rotate", diff --git a/core/commands/keystore.go b/core/commands/keystore.go index 6ce1b5a0d..afcdb62db 100644 --- a/core/commands/keystore.go +++ b/core/commands/keystore.go @@ -38,9 +38,9 @@ publish'. > ipfs key gen --type=rsa --size=2048 mykey > ipfs name publish --key=mykey QmSomeHash -'ipfs key list' lists the available keys. +'ipfs key ls' lists the available keys. - > ipfs key list + > ipfs key ls self mykey `, @@ -49,7 +49,8 @@ publish'. "gen": keyGenCmd, "export": keyExportCmd, "import": keyImportCmd, - "list": keyListCmd, + "list": keyListDeprecatedCmd, + "ls": keyListCmd, "rename": keyRenameCmd, "rm": keyRmCmd, "rotate": keyRotateCmd, @@ -488,6 +489,17 @@ var keyListCmd = &cmds.Command{ Type: KeyOutputList{}, } +var keyListDeprecatedCmd = &cmds.Command{ + Status: cmds.Deprecated, + Helptext: cmds.HelpText{ + Tagline: "Deprecated: use 'ipfs key ls' instead.", + }, + Options: keyListCmd.Options, + Run: keyListCmd.Run, + Encoders: keyListCmd.Encoders, + Type: keyListCmd.Type, +} + const ( keyStoreForceOptionName = "force" ) @@ -773,7 +785,7 @@ the signed payload is always prefixed with "libp2p-key signed message:". `, }, Options: []cmds.Option{ - cmds.StringOption("key", "k", "The name of the key to use for signing."), + cmds.StringOption("key", "k", "The name of the key to use for verifying."), cmds.StringOption("signature", "s", "Multibase-encoded signature to verify."), ke.OptionIPNSBase, }, diff --git a/docs/changelogs/v0.40.md b/docs/changelogs/v0.40.md index bcdb6f0e2..127e93c73 100644 --- a/docs/changelogs/v0.40.md +++ b/docs/changelogs/v0.40.md @@ -17,7 +17,7 @@ This release was brought to you by the [Shipyard](https://ipshipyard.com/) team. - [New `ipfs diag datastore` commands](#new-ipfs-diag-datastore-commands) - [🚇 Improved `ipfs p2p` tunnels with foreground mode](#-improved-ipfs-p2p-tunnels-with-foreground-mode) - [Improved `ipfs dag stat` output](#improved-ipfs-dag-stat-output) - - [Skip bad keys when listing](#skip_bad_keys_when_listing) + - [🔑 `ipfs key` improvements](#-ipfs-key-improvements) - [Accelerated DHT Client and Provide Sweep now work together](#accelerated-dht-client-and-provide-sweep-now-work-together) - [🌐 No unnecessary DNS lookups for AutoTLS addresses](#-no-unnecessary-dns-lookups-for-autotls-addresses) - [⏱️ Configurable gateway request duration limit](#️-configurable-gateway-request-duration-limit) @@ -111,9 +111,11 @@ Ratio: 1.500000 Use `--progress=true` to force progress even when piped, or `--progress=false` to disable it. -#### Skip bad keys when listing +#### 🔑 `ipfs key` improvements -Change the `ipfs key list` behavior to log an error and continue listing keys when a key cannot be read from the keystore or decoded. +`ipfs key ls` is now the canonical command for listing keys, matching `ipfs pin ls` and `ipfs files ls`. The old `ipfs key list` still works but is deprecated. + +Listing also became more resilient: bad keys are now skipped with an error log instead of failing the entire operation. #### Accelerated DHT Client and Provide Sweep now work together