use std::path::PathBuf;
use busylib::types::app_name::AppName;
use busylib::types::brightness::Brightness;
use busylib::types::color::Color;
use busylib::types::priority::Priority;
use busylib::types::text::Text;
use clap::Subcommand;
use crate::cli::Context;
use crate::error::Result;
use crate::values::{AlignArg, FontArg, ScreenArg};
#[derive(Debug, Subcommand)]
pub enum DisplayCommand {
Text {
#[arg(value_name = "TEXT")]
text: Text,
#[arg(long, short = 'a', value_name = "NAME")]
app: AppName,
#[arg(long, value_enum, default_value_t = FontArg::Normal)]
font: FontArg,
#[arg(long, value_enum)]
align: Option<AlignArg>,
#[arg(long, value_name = "COLOR")]
color: Option<Color>,
#[arg(long, allow_negative_numbers = true, default_value_t = 0)]
x: i16,
#[arg(long, allow_negative_numbers = true, default_value_t = 0)]
y: i16,
#[arg(long, value_enum, default_value_t = ScreenArg::Front)]
screen: ScreenArg,
#[arg(long, value_name = "SECONDS")]
timeout: Option<u32>,
#[arg(long, value_name = "PRIORITY")]
priority: Option<Priority>,
#[arg(long, value_name = "COLOR")]
led: Option<Color>,
},
Draw {
#[arg(value_name = "FILE")]
file: PathBuf,
},
Clear {
#[arg(long, short = 'a', value_name = "NAME")]
app: Option<AppName>,
},
Brightness,
SetBrightness {
#[arg(value_name = "VALUE")]
value: Brightness,
},
Frame {
#[arg(value_enum, default_value_t = ScreenArg::Front)]
screen: ScreenArg,
#[arg(long, short = 'O', value_name = "FILE")]
output: Option<PathBuf>,
},
}
impl DisplayCommand {
pub async fn run(self, _context: &Context) -> Result<()> {
todo!()
}
}