things3_cloud/commands/
someday.rs1use std::{io::Write, sync::Arc};
2
3use anyhow::Result;
4use clap::Args;
5use iocraft::prelude::*;
6
7use crate::{
8 app::Cli,
9 commands::{Command, DetailedArgs},
10 ui::{render_element_to_string, views::someday::SomedayView},
11};
12
13#[derive(Debug, Default, Args)]
14pub struct SomedayArgs {
15 #[command(flatten)]
16 pub detailed: DetailedArgs,
17}
18
19impl Command for SomedayArgs {
20 fn run_with_ctx(
21 &self,
22 cli: &Cli,
23 out: &mut dyn Write,
24 ctx: &mut dyn crate::cmd_ctx::CmdCtx,
25 ) -> Result<()> {
26 let store = Arc::new(cli.load_store()?);
27 let today = ctx.today();
28 let items = store.someday();
29
30 let mut ui = element! {
31 ContextProvider(value: Context::owned(store.clone())) {
32 ContextProvider(value: Context::owned(today)) {
33 SomedayView(
34 items: &items,
35 detailed: self.detailed.detailed,
36 )
37 }
38 }
39 };
40 let rendered = render_element_to_string(&mut ui, cli.no_color);
41 writeln!(out, "{}", rendered)?;
42 Ok(())
43 }
44}