This repository has been archived on 2023-01-14. You can view files and clone it, but cannot push or open issues or pull requests.

35 lines
1.1 KiB
Rust
Raw Normal View History

2022-12-17 22:56:07 +01:00
use std::{borrow::Borrow, ffi::OsString};
pub struct Search;
impl util::Cmd for Search {
fn cmd() -> eyre::Result<clap::Command> {
Ok(clap::Command::new("search")
.allow_external_subcommands(true)
.allow_missing_positional(true))
}
fn exec(args: &clap::ArgMatches) -> eyre::Result<()> {
match args.subcommand() {
Some((external, args)) => {
let mut raw = args
.get_many::<OsString>("")
.ok_or(eyre::anyhow!("please pass some args to search"))?
.map(|s| s.as_os_str())
.map(|s| s.to_string_lossy().to_string())
.collect::<Vec<String>>();
let cmd = format!("src search {external} {}", raw.join(" "));
println!("{cmd}");
2022-12-17 23:04:37 +01:00
let mut cmd_args = vec!["src", "search", external];
2022-12-17 22:56:07 +01:00
cmd_args.append(&mut raw.iter().map(|s| &**s).collect());
2022-12-18 01:41:12 +01:00
util::shell::run(cmd_args.as_slice(), None)?;
2022-12-17 22:56:07 +01:00
}
_ => todo!(),
}
Ok(())
}
}