Improve readability

This commit is contained in:
2023-09-07 14:58:29 +03:00
parent 1d26a9c6be
commit b360e29666
2 changed files with 46 additions and 11 deletions

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "rexec" name = "rexec"
version = "1.0.7" version = "1.0.8"
readme = "https://github.com/house-of-vanity/rexec#readme" readme = "https://github.com/house-of-vanity/rexec#readme"
edition = "2021" edition = "2021"
description = "Parallel SSH executor" description = "Parallel SSH executor"

View File

@@ -9,7 +9,6 @@ use std::process;
use clap::Parser; use clap::Parser;
use colored::*; use colored::*;
//use dialoguer::Confirm;
use dns_lookup::lookup_host; use dns_lookup::lookup_host;
use env_logger::Env; use env_logger::Env;
use itertools::Itertools; use itertools::Itertools;
@@ -53,6 +52,14 @@ struct Args {
)] )]
noconfirm: bool, noconfirm: bool,
#[arg(
short = 'b',
long,
default_value_t = true,
help = "Use formatting for better human readability"
)]
beauty: bool,
#[arg(short, long, default_value_t = 100)] #[arg(short, long, default_value_t = 100)]
parallel: i32, parallel: i32,
} }
@@ -234,9 +241,7 @@ fn main() {
_ => unreachable!(), _ => unreachable!(),
}) })
{ {
info!("\n");
info!("Run command on {} servers.", &config.hosts.len()); info!("Run command on {} servers.", &config.hosts.len());
info!("\n");
// Run a command on all the configured hosts. // Run a command on all the configured hosts.
// Receive the result of the command for each host and print its output. // Receive the result of the command for each host and print its output.
@@ -248,8 +253,8 @@ fn main() {
.collect::<Vec<_>>()[0] .collect::<Vec<_>>()[0]
.to_string(); .to_string();
let ip = ip.parse::<IpAddr>().unwrap(); let ip = ip.parse::<IpAddr>().unwrap();
info!( println!(
"{}", "\n{}",
hosts_and_ips hosts_and_ips
.get(&ip) .get(&ip)
.unwrap_or(&"Couldn't parse IP".to_string()) .unwrap_or(&"Couldn't parse IP".to_string())
@@ -265,14 +270,44 @@ fn main() {
continue; continue;
} }
}; };
if output.exit_status == 0 { let code_string = if output.exit_status == 0 {
println!("Code {}", output.exit_status); format!("{}", output.exit_status.to_string().green())
} else { } else {
error!("Code {}", output.exit_status); format!("{}", output.exit_status.to_string().red())
}; };
println!("{}", format!("Exit code [{}] / stdout {} bytes / stderr {} bytes", code_string, output.stdout.len(), output.stderr.len()).bold());
if !args.code { if !args.code {
println!("STDOUT:\n{}", String::from_utf8(output.stdout).unwrap()); match String::from_utf8(output.stdout) {
println!("STDERR:\n{}", String::from_utf8(output.stderr).unwrap()); Ok(stdout) => {
match stdout.as_str() {
"" => {}
_ => {
println!("{}", "STDOUT".bold().blue());
for line in stdout.lines() {
println!("{} {}", "".green(), line);
}
}
}
}
Err(_) => {}
}
match String::from_utf8(output.stderr) {
Ok(stderr) => {
match stderr.as_str() {
"" => {}
_ => {
println!("{}", "STDERR".bold().bright_red());
for line in stderr.lines() {
println!("{} {}", "".red(), line);
}
}
}
}
Err(_) => {}
}
} }
} }
} else { } else {