Add BM::command_rm_tags()
This commit is contained in:
parent
7e401b5881
commit
bcbd568311
2 changed files with 44 additions and 0 deletions
31
etc/cli.yml
31
etc/cli.yml
|
@ -149,6 +149,37 @@ subcommands:
|
|||
required: true
|
||||
takes_value: true
|
||||
|
||||
- rm_tags:
|
||||
about: Remove tags from bookmark(s)
|
||||
version: 0.1
|
||||
author: Matthias Beyer <mail@beyermatthias.de>
|
||||
args:
|
||||
- with_id:
|
||||
long: with-id
|
||||
help: Remove tags from bookmark with ID
|
||||
required: false
|
||||
takes_value: true
|
||||
|
||||
- with_match:
|
||||
short: m
|
||||
long: with-match
|
||||
help: Remove tags from bookmark(s) which match this regex
|
||||
required: false
|
||||
takes_value: true
|
||||
|
||||
- with_tags:
|
||||
long: with-tags
|
||||
help: Remove tags from bookmark(s) which have these tag(s)
|
||||
required: false
|
||||
takes_value: true
|
||||
|
||||
- tags:
|
||||
short: t
|
||||
long: tags
|
||||
help: Remove these tags
|
||||
required: true
|
||||
takes_value: true
|
||||
|
||||
- todo:
|
||||
about: Todo module
|
||||
version: 0.1
|
||||
|
|
|
@ -160,6 +160,15 @@ impl<'a> BM<'a> {
|
|||
})
|
||||
}
|
||||
|
||||
fn command_rm_tags(&self, matches: &ArgMatches) -> bool {
|
||||
self.alter_tags_in_files(matches, |old_tags, cli_tags| {
|
||||
old_tags.clone()
|
||||
.into_iter()
|
||||
.filter(|tag| !cli_tags.contains(tag))
|
||||
.collect()
|
||||
})
|
||||
}
|
||||
|
||||
fn alter_tags_in_files<F>(&self, matches: &ArgMatches, generate_new_tags: F) -> bool
|
||||
where F: Fn(Vec<String>, &Vec<String>) -> Vec<String>
|
||||
{
|
||||
|
@ -313,6 +322,10 @@ impl<'a> Module<'a> for BM<'a> {
|
|||
self.command_add_tags(matches.subcommand_matches("add_tags").unwrap())
|
||||
},
|
||||
|
||||
Some("rm_tags") => {
|
||||
self.command_rm_tags(matches.subcommand_matches("rm_tags").unwrap())
|
||||
},
|
||||
|
||||
Some(_) | None => {
|
||||
info!("No command given, doing nothing");
|
||||
false
|
||||
|
|
Loading…
Reference in a new issue