use usage_rs::{Args, RunAsyncWith};
use crate::cli::Ctx;
#[derive(Args)]
#[usage(effect = "read")]
pub(crate) struct Show {
#[usage(arg, name = "BOARD")]
board: String,
#[usage(long)]
resolved: bool,
#[usage(short, long)]
web: bool,
}
impl RunAsyncWith<&Ctx> for Show {
type Output = yt::Result<()>;
async fn run_async_with(self, ctx: &Ctx) -> Self::Output {
let client = ctx.client().await?;
let board = super::find(client, &self.board).await?;
if self.web {
let url = client.instance().board_url(&board.id);
if !yt::browser::open(&ctx.env, url.as_str()) {
ctx.output.write(url.as_str())?;
}
return Ok(());
}
let sprint = super::sprint(client, &board, None).await?;
super::view::show_sprint(ctx, client, &board, sprint.as_ref(), self.resolved).await
}
}