things3_cloud/commands/
anytime.rs1use 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}