Skip to main content

things3_cloud/commands/
anytime.rs

1use crate::app::Cli;
2use crate::commands::{Command, DetailedArgs};
3use crate::common::{colored, fmt_tasks_grouped, BOLD, CYAN, DIM, ICONS};
4use anyhow::Result;
5use clap::Args;
6use std::io::Write;
7
8#[derive(Debug, Default, Args)]
9pub struct AnytimeArgs {
10    #[command(flatten)]
11    pub detailed: DetailedArgs,
12}
13
14impl Command for AnytimeArgs {
15    fn run_with_ctx(
16        &self,
17        cli: &Cli,
18        out: &mut dyn Write,
19        ctx: &mut dyn crate::cmd_ctx::CmdCtx,
20    ) -> Result<()> {
21        let store = cli.load_store()?;
22        let today = ctx.today();
23        let tasks = store.anytime(&today);
24
25        if tasks.is_empty() {
26            writeln!(
27                out,
28                "{}",
29                colored("Anytime is empty.", &[DIM], cli.no_color)
30            )?;
31            return Ok(());
32        }
33
34        writeln!(
35            out,
36            "{}",
37            colored(
38                &format!("{} Anytime  ({} tasks)", ICONS.anytime, tasks.len()),
39                &[BOLD, CYAN],
40                cli.no_color,
41            )
42        )?;
43        writeln!(out)?;
44
45        writeln!(
46            out,
47            "{}",
48            fmt_tasks_grouped(
49                &tasks,
50                &store,
51                "  ",
52                true,
53                self.detailed.detailed,
54                &today,
55                cli.no_color,
56            )
57        )?;
58        Ok(())
59    }
60}