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