1
0
Fork 0
forked from wry/wry

cli: add json output

This commit is contained in:
Julian Orth 2026-03-23 13:23:37 +01:00
parent 65aca4903b
commit f3d650f2de
19 changed files with 1755 additions and 453 deletions

View file

@ -1,6 +1,9 @@
use {
crate::{
cli::GlobalArgs,
cli::{
GlobalArgs,
json::{JsonColorManagementStatus, jsonl},
},
tools::tool_client::{Handle, ToolClient, with_tool_client},
wire::{JayColorManagementId, jay_color_management, jay_compositor},
},
@ -28,7 +31,7 @@ pub enum ColorManagementCmd {
pub fn main(global: GlobalArgs, args: ColorManagementArgs) {
with_tool_client(global.log_level, |tc| async move {
let cm = ColorManagement { tc: tc.clone() };
cm.run(args).await;
cm.run(&global, args).await;
});
}
@ -37,19 +40,19 @@ struct ColorManagement {
}
impl ColorManagement {
async fn run(self, args: ColorManagementArgs) {
async fn run(self, global: &GlobalArgs, args: ColorManagementArgs) {
let tc = &self.tc;
let comp = tc.jay_compositor().await;
let id = tc.id();
tc.send(jay_compositor::GetColorManagement { self_id: comp, id });
match args.command.unwrap_or_default() {
ColorManagementCmd::Status => self.status(id).await,
ColorManagementCmd::Status => self.status(global, id).await,
ColorManagementCmd::Enable => self.set_enabled(id, true).await,
ColorManagementCmd::Disable => self.set_enabled(id, false).await,
}
}
async fn status(self, id: JayColorManagementId) {
async fn status(self, global: &GlobalArgs, id: JayColorManagementId) {
let tc = &self.tc;
tc.send(jay_color_management::Get { self_id: id });
let enabled = Rc::new(Cell::new(false));
@ -61,14 +64,21 @@ impl ColorManagement {
iv.set(msg.available != 0);
});
tc.round_trip().await;
if enabled.get() {
print!("Enabled");
if !available.get() {
print!(" (Unavailable)");
}
println!();
if global.json {
jsonl(&JsonColorManagementStatus {
enabled: enabled.get(),
available: available.get(),
});
} else {
println!("Disabled");
if enabled.get() {
print!("Enabled");
if !available.get() {
print!(" (Unavailable)");
}
println!();
} else {
println!("Disabled");
}
}
}