diff --git a/crates/dagger-cuddle-please/src/lib.rs b/crates/dagger-cuddle-please/src/lib.rs index 26422c1..2371677 100644 --- a/crates/dagger-cuddle-please/src/lib.rs +++ b/crates/dagger-cuddle-please/src/lib.rs @@ -275,7 +275,6 @@ impl DaggerCuddlePlease { args: &CuddlePleaseSrcArgs, ) -> eyre::Result<()> { let build_image = client.container().from(&args.cuddle_image); - let res = build_image .with_secret_variable( "CUDDLE_PLEASE_TOKEN", @@ -317,26 +316,49 @@ Host * owner: Some("root"), permissions: Some(700), }, - ) - .with_exec(vec![ - "cuddle-please", - "release", + ); + + let remote_url = res + .with_exec(vec!["git", "config", "--get", "remote.origin.url"]) + .stdout() + .await?; + + let res = if remote_url.starts_with("http") { + res.with_exec(vec![ + "git", + "config", + "--global", &format!( - "--engine={}", - match &args.server { - SrcServer::Gitea { .. } => "gitea", - SrcServer::GitHub { .. } => "github", - } + "url.ssh://git@{}/.insteadOf", + remote_url + .trim_start_matches("https://") + .trim_start_matches("http://") ), - "--log-level", - match args.log_level.as_ref().unwrap_or(&LogLevel::Info) { - LogLevel::Trace => "trace", - LogLevel::Debug => "debug", - LogLevel::Info => "info", - LogLevel::Warn => "warn", - LogLevel::Error => "error", - }, - ]); + &remote_url, + ]) + } else { + res + }; + + let res = res.with_exec(vec![ + "cuddle-please", + "release", + &format!( + "--engine={}", + match &args.server { + SrcServer::Gitea { .. } => "gitea", + SrcServer::GitHub { .. } => "github", + } + ), + "--log-level", + match args.log_level.as_ref().unwrap_or(&LogLevel::Info) { + LogLevel::Trace => "trace", + LogLevel::Debug => "debug", + LogLevel::Info => "info", + LogLevel::Warn => "warn", + LogLevel::Error => "error", + }, + ]); let exit_code = res.exit_code().await?; if exit_code != 0 {