use clap_complete::ArgValueCandidates;
use jj_lib::git;
use jj_lib::ref_name::RemoteNameBuf;
use super::super::remove_remote_from_repo_config;
use crate::cli_util::CommandHelper;
use crate::command_error::CommandError;
use crate::complete;
use crate::ui::Ui;
#[derive(clap::Args, Clone, Debug)]
pub struct GitRemoteRemoveArgs {
#[arg(add = ArgValueCandidates::new(complete::git_remotes))]
remote: RemoteNameBuf,
}
pub async fn cmd_git_remote_remove(
ui: &mut Ui,
command: &CommandHelper,
args: &GitRemoteRemoveArgs,
) -> Result<(), CommandError> {
let mut workspace_command = command.workspace_helper(ui)?;
let mut tx = workspace_command.start_transaction();
git::remove_remote(tx.repo_mut(), &args.remote)?;
if tx.repo().has_changes() {
tx.finish(ui, format!("remove git remote {}", args.remote.as_symbol()))
.await?;
} else {
}
remove_remote_from_repo_config(ui, command.raw_config(), &args.remote)?;
Ok(())
}