summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Casonato <hello@lcas.dev>2023-12-04 12:40:58 +0100
committerGitHub <noreply@github.com>2023-12-04 12:40:58 +0100
commit7d5ddc462c884e000217cecbaa5fdbc232ebb38e (patch)
treea7a824ba128f7853f63d7a146c6483f21029566d
parent0a738dc49df7a17416f4d62f62282292c1bb2174 (diff)
fix: don't error if a version already published (#21455)
-rw-r--r--cli/tools/registry/mod.rs30
1 files changed, 22 insertions, 8 deletions
diff --git a/cli/tools/registry/mod.rs b/cli/tools/registry/mod.rs
index c6508fd49..a86e15dd6 100644
--- a/cli/tools/registry/mod.rs
+++ b/cli/tools/registry/mod.rs
@@ -388,14 +388,28 @@ async fn perform_publish(
.send()
.await?;
- let mut task = parse_response::<PublishingTask>(response)
- .await
- .with_context(|| {
- format!(
- "Failed to publish @{}/{} at {}",
- package.scope, package.package, package.version
- )
- })?;
+ let res = parse_response::<PublishingTask>(response).await;
+ let mut task = match res {
+ Ok(task) => task,
+ Err(err) if err.code == "versionAlreadyExists" => {
+ println!(
+ "{} @{}/{}@{}",
+ colors::yellow("Skipping, already published"),
+ package.scope,
+ package.package,
+ package.version
+ );
+ continue;
+ }
+ Err(err) => {
+ return Err(err).with_context(|| {
+ format!(
+ "Failed to publish @{}/{} at {}",
+ package.scope, package.package, package.version
+ )
+ })
+ }
+ };
let interval = std::time::Duration::from_secs(2);
while task.status != "success" && task.status != "failure" {