From 43d2ecd4f056bf38fe5f5656e550061c68c717f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 8 Jan 2024 16:25:18 +0100 Subject: fix(registry): wait for already pending publish (#21663) Co-authored-by: Luca Casonato --- cli/tools/registry/mod.rs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'cli/tools/registry/mod.rs') diff --git a/cli/tools/registry/mod.rs b/cli/tools/registry/mod.rs index 789ee131f..ee1174e1c 100644 --- a/cli/tools/registry/mod.rs +++ b/cli/tools/registry/mod.rs @@ -555,15 +555,29 @@ async fn publish_package( let res = api::parse_response::(response).await; let mut task = match res { Ok(task) => task, - Err(err) if err.code == "duplicateVersionPublish" => { + Err(mut err) if err.code == "duplicateVersionPublish" => { + let task = serde_json::from_value::( + err.data.get_mut("task").unwrap().take(), + ) + .unwrap(); + if task.status == "success" { + println!( + "{} @{}/{}@{}", + colors::green("Skipping, already published"), + package.scope, + package.package, + package.version + ); + return Ok(()); + } println!( "{} @{}/{}@{}", - colors::yellow("Skipping, already published"), + colors::yellow("Already uploaded, waiting for publishing"), package.scope, package.package, package.version ); - return Ok(()); + task } Err(err) => { return Err(err).with_context(|| { -- cgit v1.2.3