Document filter and modification syntax
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
use super::args::{arg_matching, id_list, minus_tag, plus_tag, TaskId};
|
||||
use super::ArgList;
|
||||
use crate::usage;
|
||||
use nom::{branch::alt, combinator::*, multi::fold_many0, IResult};
|
||||
use textwrap::dedent;
|
||||
|
||||
/// A filter represents a selection of a particular set of tasks.
|
||||
///
|
||||
@@ -110,6 +112,36 @@ impl Filter {
|
||||
}
|
||||
map_res(arg_matching(minus_tag), to_filterarg)(input)
|
||||
}
|
||||
|
||||
pub(super) fn get_usage(u: &mut usage::Usage) {
|
||||
u.filters.push(usage::Filter {
|
||||
syntax: "TASKID[,TASKID,..]".to_owned(),
|
||||
summary: "Specific tasks".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
Select only specific tasks. Multiple tasks can be specified either separated by
|
||||
commas or as separate arguments. Each task may be specfied by its working-set
|
||||
index (a small number) or by its UUID. Prefixes of UUIDs broken at hyphens are
|
||||
also supported, such as `b5664ef8-423d` or `b5664ef8`.",
|
||||
),
|
||||
});
|
||||
u.filters.push(usage::Filter {
|
||||
syntax: "+TAG".to_owned(),
|
||||
summary: "Tagged tasks".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
Select tasks with the given tag.",
|
||||
),
|
||||
});
|
||||
u.filters.push(usage::Filter {
|
||||
syntax: "-TAG".to_owned(),
|
||||
summary: "Un-tagged tasks".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
Select tasks that do not have the given tag.",
|
||||
),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
@@ -31,4 +31,6 @@ type ArgList<'a> = &'a [&'a str];
|
||||
|
||||
pub(crate) fn get_usage(usage: &mut Usage) {
|
||||
Subcommand::get_usage(usage);
|
||||
Filter::get_usage(usage);
|
||||
Modification::get_usage(usage);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
use super::args::{any, arg_matching, minus_tag, plus_tag};
|
||||
use super::ArgList;
|
||||
use crate::usage;
|
||||
use nom::{branch::alt, combinator::*, multi::fold_many0, IResult};
|
||||
use std::collections::HashSet;
|
||||
use taskchampion::Status;
|
||||
use textwrap::dedent;
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
pub enum DescriptionMod {
|
||||
@@ -107,6 +109,34 @@ impl Modification {
|
||||
}
|
||||
map_res(arg_matching(minus_tag), to_modarg)(input)
|
||||
}
|
||||
|
||||
pub(super) fn get_usage(u: &mut usage::Usage) {
|
||||
u.modifications.push(usage::Modification {
|
||||
syntax: "DESCRIPTION".to_owned(),
|
||||
summary: "Set description".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
Set the task description. Multiple arguments are combined into a single
|
||||
space-separated description.",
|
||||
),
|
||||
});
|
||||
u.modifications.push(usage::Modification {
|
||||
syntax: "+TAG".to_owned(),
|
||||
summary: "Tag task".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
Add the given tag to the task.",
|
||||
),
|
||||
});
|
||||
u.modifications.push(usage::Modification {
|
||||
syntax: "-TAG".to_owned(),
|
||||
summary: "Un-tag task".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
Remove the given tag from the task.",
|
||||
),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
@@ -243,7 +243,7 @@ impl Modify {
|
||||
});
|
||||
u.subcommands.push(usage::Subcommand {
|
||||
name: "stop".to_owned(),
|
||||
syntax: "[filter] start [modification]".to_owned(),
|
||||
syntax: "[filter] stop [modification]".to_owned(),
|
||||
summary: "Stop tasks".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
@@ -252,7 +252,7 @@ impl Modify {
|
||||
});
|
||||
u.subcommands.push(usage::Subcommand {
|
||||
name: "done".to_owned(),
|
||||
syntax: "[filter] start [modification]".to_owned(),
|
||||
syntax: "[filter] done [modification]".to_owned(),
|
||||
summary: "Mark tasks as completed".to_owned(),
|
||||
description: dedent(
|
||||
"
|
||||
|
||||
Reference in New Issue
Block a user