use super::{ingest, meili, DEFAULT_INDEX, DEFAULT_KEY, DEFAULT_URL};
use cargo_metadata::semver::Version;
#[derive(argh::FromArgs)]
#[argh(subcommand, name = "build")]
pub struct Build {
#[argh(positional, default = "DEFAULT_INDEX.into()")]
index_name: String,
#[argh(option, long = "url", default = "DEFAULT_URL.into()")]
meilisearch_url: String,
#[argh(option, long = "master-key", default = "DEFAULT_KEY.into()")]
meilisearch_master_key: String,
#[argh(option, long = "release-version")]
release_version: Option<Version>,
#[argh(option, long = "exclude-crate")]
exclude_crates: Vec<String>,
#[argh(option, long = "rust-toolchain")]
rust_toolchain: Option<String>,
}
impl Build {
pub fn run(self) -> anyhow::Result<()> {
let client = meili::connect(&self.meilisearch_url, &self.meilisearch_master_key)?;
let documents = ingest::run(
self.release_version,
&self.exclude_crates,
self.rust_toolchain.as_deref().unwrap_or("nightly"),
)?;
client.index(&self.index_name, &documents)?;
Ok(())
}
}