Supply, #[command(about = "Generate teleburn addresses")] Teleburn(teleburn::Teleburn), #[command(about = "Display satoshi traits")] Traits(traits::Traits), #[command(subcommand, about = "Wallet commands")] Wallet(wallet::Wallet), } impl Subcommand { pub(crate) fn run(self, options: Options) -> SubcommandResult { match self { Self::Decode(decode) => decode.run(), Self::Epochs => epochs::run(), Self::Find(find) => find.run(options), Self::Index(index) => index.run(options), Self::List(list) => list.run(options), Self::Parse(parse) => parse.run(), Self::Preview(preview) => preview.run(), Self::Server(server) => { let index = Arc::new(Index::open(&options)?); let handle = axum_server::Handle::new(); LISTENERS.lock().unwrap().push(handle.clone()); server.run(options, index, handle) } Self::Subsidy(subsidy) => subsidy.run(), Self::Supply => supply::run(), Self::Teleburn(teleburn) => teleburn.run(),