lgtm-cli 0.6.0

Run LGTM code reviews with a bundled web UI and gRPC server.
use clap::Args;

use crate::{
    backend::{extensions::git::get_cwd_git_dir, proto::lgtm::v1::AddRequest},
    models::{AddCommandOutput, LocalArgs, parse_nonempty},
    rpc_client,
    store::Store,
};

#[derive(Args)]
pub struct AddArgs {
    #[arg(required = true, num_args = 1.., value_parser = parse_nonempty)]
    pub paths: Vec<String>,
    #[command(flatten)]
    pub location: LocalArgs,
}

pub async fn run(args: AddArgs, store: &Store, json: bool) -> anyhow::Result<()> {
    let git_dir = get_cwd_git_dir()?;
    let client = rpc_client::connect(store).await?;
    let local = args.location.local;
    let response = client
        .add(AddRequest {
            git_dir,
            paths: args.paths,
            local,
            ..Default::default()
        })
        .await?
        .into_owned();

    AddCommandOutput::from((response, local)).print(json);
    Ok(())
}