summaryrefslogtreecommitdiff
path: root/cli/tools/registry/mod.rs
diff options
context:
space:
mode:
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(|| {