aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/ts/tskm
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ts/tskm')
-rw-r--r--pkgs/by-name/ts/tskm/src/cli.rs10
-rw-r--r--pkgs/by-name/ts/tskm/src/interface/input/handle.rs12
2 files changed, 17 insertions, 5 deletions
diff --git a/pkgs/by-name/ts/tskm/src/cli.rs b/pkgs/by-name/ts/tskm/src/cli.rs
index ac8f8ee9..0e32fa62 100644
--- a/pkgs/by-name/ts/tskm/src/cli.rs
+++ b/pkgs/by-name/ts/tskm/src/cli.rs
@@ -8,10 +8,10 @@
// You should have received a copy of the License along with this program.
// If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
-use std::{ffi::OsStr, path::PathBuf};
+use std::{ffi::OsStr, fmt::Display, path::PathBuf};
use anyhow::{bail, Result};
-use clap::{builder::StyledStr, ArgAction, Parser, Subcommand};
+use clap::{builder::StyledStr, ArgAction, Parser, Subcommand, ValueEnum};
use clap_complete::{ArgValueCompleter, CompletionCandidate};
use url::Url;
@@ -174,7 +174,11 @@ pub enum InputCommand {
},
/// List all the previously added inputs.
- List,
+ List {
+ /// Only list the inputs that have all the specified tags
+ #[arg(add = ArgValueCompleter::new(complete_tag))]
+ tags: Vec<Tag>,
+ },
}
fn complete_task_id(current: &OsStr) -> Vec<CompletionCandidate> {
diff --git a/pkgs/by-name/ts/tskm/src/interface/input/handle.rs b/pkgs/by-name/ts/tskm/src/interface/input/handle.rs
index 09827fca..0469870c 100644
--- a/pkgs/by-name/ts/tskm/src/interface/input/handle.rs
+++ b/pkgs/by-name/ts/tskm/src/interface/input/handle.rs
@@ -126,8 +126,16 @@ pub fn handle(command: InputCommand) -> Result<()> {
info!("Waiting for firefox to stop");
handle.join().expect("Should be joinable")?;
}
- InputCommand::List => {
- for url in Input::all()? {
+ InputCommand::List { tags } => {
+ let mut tag_set = HashSet::with_capacity(tags.len());
+ for tag in tags {
+ tag_set.insert(tag);
+ }
+
+ for url in Input::all()?
+ .iter()
+ .filter(|input| tag_set.is_subset(&input.tags))
+ {
println!("{url}");
}
}