use kinetic::KineticResult;
#[derive(RustcDecodable, Debug)]
pub struct LogArgs {
flag_verbose: bool,
arg_target: String,
}
static USAGE: &'static str = "
Get log information from kinetic device
Usage: kinetic-rust log messages [options] <target>
kinetic-rust log (-h | --help)
Options:
-h, --help Print this message
-v, --verbose Use verbose output
";
fn to_utf8(s: &[u8]) -> String {
String::from_utf8(s.to_vec()).unwrap()
}
fn execute(cmd: &LogArgs, shell: &mut ::shell::MultiShell) -> KineticResult<()> {
shell.set_verbose(cmd.flag_verbose);
try!(shell.status("Connecting", format!("device at {}:8123", cmd.arg_target)));
let c = try!(::kinetic::Client::new(format!("{}:8123", cmd.arg_target).as_str()));
let x = try!(c.send(::kinetic::commands::GetLog { log_types: vec![::kinetic::proto::command::LogType::MESSAGES]}));
let s = x.get_messages();
println!("{}", to_utf8(s));
Ok(()) }
impl ::cli::CliCommand for LogArgs {
fn from_argv(argv: ::std::vec::Vec<String>) -> LogArgs {
::docopt::Docopt::new(::cli::CliCommand::usage(None::<LogArgs>))
.and_then(|d| d.argv(argv.clone().into_iter()).decode() )
.unwrap_or_else(|e| e.exit())
}
#[inline]
fn execute(&self, shell: &mut ::shell::MultiShell) -> ::kinetic::KineticResult<()> {
execute(self, shell)
}
#[inline]
fn usage(_: Option<LogArgs>) -> &'static str { USAGE }
}