diff options
author | Luca Casonato <hello@lcas.dev> | 2023-12-04 12:40:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-04 12:40:58 +0100 |
commit | 7d5ddc462c884e000217cecbaa5fdbc232ebb38e (patch) | |
tree | a7a824ba128f7853f63d7a146c6483f21029566d | |
parent | 0a738dc49df7a17416f4d62f62282292c1bb2174 (diff) |
fix: don't error if a version already published (#21455)
-rw-r--r-- | cli/tools/registry/mod.rs | 30 |
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" { |