with dry-run mode

This commit is contained in:
Kasper Juul Hermansen 2022-12-01 08:44:02 +01:00
parent ef28a7a248
commit fe68769081
Signed by: kjuulh
GPG Key ID: 57B6E1465221F912
4 changed files with 32 additions and 4 deletions

View File

@ -58,6 +58,13 @@ pub fn execute_cmd() -> Command {
.env("GITHUB_USERNAME")
.required(false),
)
.arg(
Arg::new("dry-run")
.long("dry-run")
.action(ArgAction::Set)
.env("OCTOPUSH_DRY_RUN")
.required(false),
)
}
pub async fn execute_subcommand(args: &ArgMatches) -> eyre::Result<()> {
@ -71,6 +78,7 @@ pub async fn execute_subcommand(args: &ArgMatches) -> eyre::Result<()> {
let github_http_token = args.get_one::<String>("github-api-token");
let github_username = args.get_one::<String>("github-username");
let dryrun = args.get_one::<bool>("dry-run").unwrap_or(&false).clone();
let service_register = ServiceRegister::new(
LocalGitProviderOptions { http_auth: None },
@ -107,21 +115,21 @@ pub async fn execute_subcommand(args: &ArgMatches) -> eyre::Result<()> {
if let Some(git) = &select.git {
service_register
.git_selector
.run(git, &action_path, &action)
.run(git, &action_path, &action, dryrun)
.await?;
}
if let Some(gitea) = &select.gitea {
service_register
.gitea_selector
.run(gitea, &action_path, &action)
.run(gitea, &action_path, &action, dryrun)
.await?;
}
if let Some(github) = &select.github {
service_register
.github_selector
.run(github, &action_path, &action)
.run(github, &action_path, &action, dryrun)
.await?;
}
}

View File

@ -21,7 +21,13 @@ impl GitSelector {
}
}
pub async fn run(&self, git: &Git, action_path: &PathBuf, action: &Action) -> eyre::Result<()> {
pub async fn run(
&self,
git: &Git,
action_path: &PathBuf,
action: &Action,
dryrun: bool,
) -> eyre::Result<()> {
tracing::info!("fetching repos");
for repo in &git.repositories {
let gp = self.git_provider.clone();
@ -36,6 +42,10 @@ impl GitSelector {
self.executor.execute(&path, action_path, action).await?;
if dryrun {
return Ok(());
}
if let Some(push) = &git.push {
self.git_provider
.push_branch(repo, &push.branch.name)

View File

@ -32,6 +32,7 @@ impl GiteaSelector {
git: &Gitea,
action_path: &PathBuf,
action: &Action,
dryrun: bool,
) -> eyre::Result<()> {
tracing::info!("fetching repos");
for repo in &git.repositories {
@ -47,6 +48,10 @@ impl GiteaSelector {
self.executor.execute(&path, action_path, action).await?;
if dryrun {
return Ok(());
}
if let Some(push) = &git.push {
self.git_provider
.push_branch(repo, &push.pull_request.name)

View File

@ -32,6 +32,7 @@ impl GitHubSelector {
git: &GitHub,
action_path: &PathBuf,
action: &Action,
dryrun: bool,
) -> eyre::Result<()> {
tracing::info!("fetching repos");
for repo in &git.repositories {
@ -47,6 +48,10 @@ impl GitHubSelector {
self.executor.execute(&path, action_path, action).await?;
if dryrun {
return Ok(());
}
if let Some(push) = &git.push {
self.git_provider
.push_branch(repo, &push.pull_request.name)