## [Unreleased]
- Add wallet subcommand `config` to save wallet configs
- Add `wallets` command to list all wallets saved configs
+- Added `completions` subcommand to generate shell completions
## [2.0.0]
- Removed MSRV and bumped Rust Edition to 2024
-- Add `--pretty` flag for formatting outputs in human-readable form
+- Added `--pretty` flag for formatting outputs in human-readable form
- Updated `bdk_wallet ` to `2.1.0`, `bdk_bitcoind_rpc` to `0.21.0`, `bdk_esplora` to `0.22.1`, `bdk_kyoto` to `0.13.1`
- Updated `tracing-subscriber` to 0.3.20
- Added `tr` script type to `compile` command to support creating taproot descriptors
"bdk_redb",
"bdk_wallet",
"clap",
+ "clap_complete",
"cli-table",
"dirs",
"env_logger",
"strsim",
]
+[[package]]
+name = "clap_complete"
+version = "4.5.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c0da80818b2d95eca9aa614a30783e42f62bf5fdfee24e68cfb960b071ba8d1"
+dependencies = [
+ "clap",
+]
+
[[package]]
name = "clap_derive"
version = "4.5.49"
[dependencies]
bdk_wallet = { version = "2.1.0", features = ["rusqlite", "keys-bip39", "compiler", "std"] }
clap = { version = "4.5", features = ["derive","env"] }
+clap_complete = "4.5"
dirs = { version = "6.0.0" }
env_logger = "0.11.6"
log = "0.4"
bip32::{DerivationPath, Xpriv},
};
use clap::{Args, Parser, Subcommand, ValueEnum, value_parser};
+use clap_complete::Shell;
#[cfg(any(feature = "electrum", feature = "esplora", feature = "rpc"))]
use crate::utils::parse_proxy_auth;
},
/// List all saved wallet configurations.
Wallets,
+ /// Generate tab-completion scripts for your shell.
+ ///
+ /// Outputs a shell-specific completion script to stdout.
+ /// To enable completions you need to redirect this output into the appropriate location for your shell.
+ ///
+ /// Bash:
+ /// bdk-cli completions bash > ~/.local/share/bash-completion/completions/bdk-cli
+ ///
+ /// Zsh:
+ /// bdk-cli completions zsh > ~/.zfunc/_bdk-cli
+ /// # Make sure ~/.zfunc is in your fpath (add to .zshrc):
+ /// # fpath=(~/.zfunc $fpath)
+ /// # autoload -Uz compinit && compinit
+ ///
+ /// Fish:
+ /// bdk-cli completions fish > ~/.config/fish/completions/bdk-cli.fish
+ ///
+ /// PowerShell:
+ /// bdk-cli completions powershell >> $PROFILE
+ ///
+ /// Elvish:
+ /// bdk-cli completions elvish >> ~/.elvish/rc.elv
+ ///
+ /// After installing the completion script, restart your shell or source
+ /// the configuration file for the changes to take effect.
+ #[command(verbatim_doc_comment)]
+ Completions {
+ /// Target shell syntax
+ #[arg(value_enum)]
+ shell: Shell,
+ },
}
+
/// Wallet operation subcommands.
#[derive(Debug, Subcommand, Clone, PartialEq)]
pub enum WalletSubCommand {
descriptor::{Descriptor, Legacy, Miniscript},
miniscript::{Tap, descriptor::TapTree, policy::Concrete},
};
+use clap::CommandFactory;
use cli_table::{Cell, CellStruct, Style, Table, format::Justify};
use serde_json::json;
#[cfg(feature = "cbf")]
let descriptor = handle_descriptor_command(cli_opts.network, desc_type, key, pretty)?;
Ok(descriptor)
}
+ CliSubCommand::Completions { shell } => {
+ clap_complete::generate(
+ shell,
+ &mut CliOpts::command(),
+ "bdk-cli",
+ &mut std::io::stdout(),
+ );
+
+ Ok("".to_string())
+ }
};
result
}