]> git.proxmox.com Git - cargo.git/blob - src/bin/cargo/commands/search.rs
Auto merge of #6387 - dwijnand:rust-2018, r=dwijnand
[cargo.git] / src / bin / cargo / commands / search.rs
1 use crate::command_prelude::*;
2
3 use std::cmp::min;
4
5 use cargo::ops;
6
7 pub fn cli() -> App {
8 subcommand("search")
9 .about("Search packages in crates.io")
10 .arg(Arg::with_name("query").multiple(true))
11 .arg_index()
12 .arg(
13 opt(
14 "limit",
15 "Limit the number of results (default: 10, max: 100)",
16 ).value_name("LIMIT"),
17 )
18 .arg(opt("registry", "Registry to use").value_name("REGISTRY"))
19 }
20
21 pub fn exec(config: &mut Config, args: &ArgMatches<'_>) -> CliResult {
22 let registry = args.registry(config)?;
23 let index = args.index(config)?;
24 let limit = args.value_of_u32("limit")?;
25 let limit = min(100, limit.unwrap_or(10));
26 let query: Vec<&str> = args.values_of("query").unwrap_or_default().collect();
27 let query: String = query.join("+");
28 ops::search(&query, config, index, limit, registry)?;
29 Ok(())
30 }