mirror of
https://github.com/edera-dev/krata.git
synced 2025-10-25 19:39:38 +00:00
kratactl: rework to separate commands
This commit is contained in:
28
crates/kratactl/src/cli/watch.rs
Normal file
28
crates/kratactl/src/cli/watch.rs
Normal file
@ -0,0 +1,28 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
use krata::control::watch_events_reply::Event;
|
||||
|
||||
use crate::{cli::pretty::guest_status_text, events::EventStream};
|
||||
|
||||
#[derive(Parser)]
|
||||
pub struct WatchCommand {}
|
||||
|
||||
impl WatchCommand {
|
||||
pub async fn run(self, events: EventStream) -> Result<()> {
|
||||
let mut stream = events.subscribe();
|
||||
loop {
|
||||
let event = stream.recv().await?;
|
||||
match event {
|
||||
Event::GuestChanged(changed) => {
|
||||
if let Some(guest) = changed.guest {
|
||||
println!(
|
||||
"event=guest.changed guest={} status={}",
|
||||
guest.id,
|
||||
guest_status_text(guest.state.unwrap_or_default().status())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user