1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
use clap::Parser;
use ognibuild::debian::file_search::{
get_apt_contents_file_searcher, get_packages_for_paths, FileSearcher, GENERATED_FILE_SEARCHER,
};
use std::path::PathBuf;
#[derive(Parser)]
struct Args {
#[clap(short, long)]
/// Search for regex.
regex: bool,
/// Path to search for.
path: Vec<PathBuf>,
#[clap(short, long)]
/// Enable debug output.
debug: bool,
#[clap(short, long)]
/// Case insensitive search.
case_insensitive: bool,
}
pub fn main() -> Result<(), i8> {
let args: Args = Args::parse();
env_logger::builder()
.filter_level(if args.debug {
log::LevelFilter::Debug
} else {
log::LevelFilter::Info
})
.init();
let session = ognibuild::session::plain::PlainSession::new();
let main_searcher = get_apt_contents_file_searcher(&session).unwrap();
let searchers: Vec<&dyn FileSearcher> = vec![
main_searcher.as_ref(),
&*GENERATED_FILE_SEARCHER as &dyn FileSearcher,
];
let packages = get_packages_for_paths(
args.path
.iter()
.map(|x| x.as_path().to_str().unwrap())
.collect(),
searchers.as_slice(),
args.regex,
args.case_insensitive,
);
for package in packages {
println!("{}", package);
}
Ok(())
}
|