summaryrefslogtreecommitdiff
path: root/cli/tools/registry/mod.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2024-01-08 16:25:18 +0100
committerGitHub <noreply@github.com>2024-01-08 15:25:18 +0000
commit43d2ecd4f056bf38fe5f5656e550061c68c717f0 (patch)
treec03d4f7f4786d8e61dddeaf8a367605de1d0809b /cli/tools/registry/mod.rs
parent664ffe2ad0d78865668aee2c94861ff9a2421592 (diff)
fix(registry): wait for already pending publish (#21663)
Co-authored-by: Luca Casonato <hello@lcas.dev>
Diffstat (limited to 'cli/tools/registry/mod.rs')
-rw-r--r--cli/tools/registry/mod.rs20
1 files changed, 17 insertions, 3 deletions
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::<api::PublishingTask>(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::<api::PublishingTask>(
+ 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(|| {