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::CommitRequest},
    models::{CommitCommandOutput, LocalArgs},
    rpc_client,
    store::Store,
};

#[derive(Args)]
pub struct CommitArgs {
    #[command(flatten)]
    pub location: LocalArgs,
    #[arg(short, long)]
    pub message: Option<String>,
}

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

    CommitCommandOutput::from(response).print(json);
    Ok(())
}