mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-04 20:37:15 +02:00
Add binary to list features
This commit is contained in:
parent
84f49d76cd
commit
4b4e8ea2a4
3 changed files with 57 additions and 0 deletions
41
xtask/src/main.rs
Normal file
41
xtask/src/main.rs
Normal file
|
@ -0,0 +1,41 @@
|
|||
use std::collections::HashSet;
|
||||
|
||||
use clap::Parser;
|
||||
|
||||
/// List features available in the workspace
|
||||
#[derive(Parser, Debug)]
|
||||
struct ListFeaturesDeriveArgs {
|
||||
/// Feature to exclude from the list. Repeat the argument to exclude multiple features
|
||||
#[arg(short, long)]
|
||||
exclude_feature: Vec<String>,
|
||||
}
|
||||
|
||||
/// Utilitary commands
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(author, version, about, long_about)]
|
||||
#[command(name = "cargo xtask")]
|
||||
#[command(bin_name = "cargo xtask")]
|
||||
enum Command {
|
||||
ListFeatures(ListFeaturesDeriveArgs),
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args = Command::parse();
|
||||
match args {
|
||||
Command::ListFeatures(args) => list_features(args),
|
||||
}
|
||||
}
|
||||
|
||||
fn list_features(args: ListFeaturesDeriveArgs) {
|
||||
let exclude_features: HashSet<_> = args.exclude_feature.into_iter().collect();
|
||||
let metadata = cargo_metadata::MetadataCommand::new().no_deps().exec().unwrap();
|
||||
let features: Vec<String> = metadata
|
||||
.packages
|
||||
.iter()
|
||||
.flat_map(|package| package.features.keys())
|
||||
.filter(|feature| !exclude_features.contains(feature.as_str()))
|
||||
.map(|s| s.to_owned())
|
||||
.collect();
|
||||
let features = features.join(" ");
|
||||
println!("{features}")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue