Browse Source

Format dora list output as table

tags/v0.3.5-rc0
Philipp Oppermann 1 year ago
parent
commit
cdb3123fa8
Failed to extract signature
3 changed files with 48 additions and 19 deletions
  1. +11
    -1
      Cargo.lock
  2. +1
    -0
      binaries/cli/Cargo.toml
  3. +36
    -18
      binaries/cli/src/main.rs

+ 11
- 1
Cargo.lock View File

@@ -2268,6 +2268,7 @@ dependencies = [
"serde",
"serde_json",
"serde_yaml 0.9.34+deprecated",
"tabwriter",
"termcolor",
"tokio",
"tokio-stream",
@@ -9088,6 +9089,15 @@ dependencies = [
"windows 0.52.0",
]

[[package]]
name = "tabwriter"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a327282c4f64f6dc37e3bba4c2b6842cc3a992f204fa58d917696a89f691e5f6"
dependencies = [
"unicode-width",
]

[[package]]
name = "tap"
version = "1.0.1"
@@ -9604,7 +9614,7 @@ version = "1.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
dependencies = [
"cfg-if 0.1.10",
"cfg-if 1.0.0",
"static_assertions",
]



+ 1
- 0
binaries/cli/Cargo.toml View File

@@ -42,3 +42,4 @@ tokio = { version = "1.20.1", features = ["full"] }
tokio-stream = { version = "0.1.8", features = ["io-util", "net"] }
futures = "0.3.21"
duration-str = "0.5"
tabwriter = "1.4.0"

+ 36
- 18
binaries/cli/src/main.rs View File

@@ -15,12 +15,13 @@ use dora_tracing::set_up_tracing;
use dora_tracing::set_up_tracing_opts;
use duration_str::parse;
use eyre::{bail, Context};
use std::net::SocketAddr;
use std::{io::Write, net::SocketAddr};
use std::{
net::{IpAddr, Ipv4Addr},
path::PathBuf,
time::Duration,
};
use tabwriter::TabWriter;
use tokio::runtime::Builder;
use uuid::Uuid;

@@ -574,29 +575,46 @@ fn stop_dataflow_by_name(
fn list(session: &mut TcpRequestReplyConnection) -> Result<(), eyre::ErrReport> {
let list = query_running_dataflows(session)?;

if list.active.is_empty() {
eprintln!("No dataflows are running");
} else {
println!("Running dataflows:");
for id in list.active {
println!("- {id}");
}
let mut tw = TabWriter::new(vec![]);
tw.write_all(b"UUID\tName\tStatus\n")?;

for id in list.active {
tw.write_all(
format!(
"{}\t{}\trunning\n",
id.uuid,
id.name.as_deref().unwrap_or_default()
)
.as_bytes(),
)?;
}

if !list.failed.is_empty() {
println!("Failed dataflows:");
for id in list.failed {
println!("- {id}");
}
for id in list.failed {
tw.write_all(
format!(
"{}\t{}\tFAILED\n",
id.uuid,
id.name.as_deref().unwrap_or_default()
)
.as_bytes(),
)?;
}

if !list.finished.is_empty() {
println!("Finished dataflows:");
for id in list.finished {
println!("- {id}");
}
for id in list.finished {
tw.write_all(
format!(
"{}\t{}\tfinished\n",
id.uuid,
id.name.as_deref().unwrap_or_default()
)
.as_bytes(),
)?;
}

tw.flush()?;
let formatted = String::from_utf8(tw.into_inner()?)?;
println!("{formatted}");

Ok(())
}



Loading…
Cancel
Save