diff options
Diffstat (limited to 'ipfs-cli/src/command/commands.rs')
-rw-r--r-- | ipfs-cli/src/command/commands.rs | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/ipfs-cli/src/command/commands.rs b/ipfs-cli/src/command/commands.rs index ffba5f2..4ded502 100644 --- a/ipfs-cli/src/command/commands.rs +++ b/ipfs-cli/src/command/commands.rs @@ -1,5 +1,4 @@ // Copyright 2017 rust-ipfs-api Developers -// // Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or // http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or // http://opensource.org/licenses/MIT>, at your option. This file may not be @@ -7,17 +6,9 @@ // use clap::App; -use command::EXPECTED_API; -use ipfs_api::IpfsClient; +use command::CliCommand; +use futures::Future; use ipfs_api::response::CommandsResponse; -use tokio_core::reactor::Core; - -pub fn signature<'a, 'b>() -> App<'a, 'b> { - clap_app!( - @subcommand commands => - (about: "List all available commands") - ) -} fn recursive_print_commands(cmd: CommandsResponse, stack: &mut Vec<String>) { if cmd.subcommands.is_empty() { @@ -35,10 +26,25 @@ fn recursive_print_commands(cmd: CommandsResponse, stack: &mut Vec<String>) { } } -pub fn handle(core: &mut Core, client: &IpfsClient) { - let commands = core.run(client.commands()).expect(EXPECTED_API); +pub struct Command; + +impl CliCommand for Command { + const NAME: &'static str = "commands"; - println!(); - recursive_print_commands(commands, &mut Vec::new()); - println!(); + fn signature<'a, 'b>() -> App<'a, 'b> { + clap_app!( + @subcommand commands => + (about: "List all available commands") + ) + } + + handle!( + (_args, client) => { + client.commands().map(|commands| { + println!(); + recursive_print_commands(commands, &mut Vec::new()); + println!(); + }) + } + ); } |