mirror of
https://github.com/denoland/deno.git
synced 2024-11-28 16:20:57 -05:00
fix(registry): wait for already pending publish (#21663)
Co-authored-by: Luca Casonato <hello@lcas.dev>
This commit is contained in:
parent
e667497b6b
commit
5ef16d0a08
2 changed files with 21 additions and 3 deletions
|
@ -53,6 +53,8 @@ pub struct PublishingTask {
|
|||
pub struct ApiError {
|
||||
pub code: String,
|
||||
pub message: String,
|
||||
#[serde(flatten)]
|
||||
pub data: serde_json::Value,
|
||||
#[serde(skip)]
|
||||
pub x_deno_ray: Option<String>,
|
||||
}
|
||||
|
@ -97,6 +99,7 @@ pub async fn parse_response<T: DeserializeOwned>(
|
|||
code: "unknown".to_string(),
|
||||
message: format!("{}: {}", status, text),
|
||||
x_deno_ray,
|
||||
data: serde_json::json!({}),
|
||||
};
|
||||
return Err(err);
|
||||
}
|
||||
|
@ -107,6 +110,7 @@ pub async fn parse_response<T: DeserializeOwned>(
|
|||
code: "unknown".to_string(),
|
||||
message: format!("Failed to parse response: {}, response: '{}'", err, text),
|
||||
x_deno_ray,
|
||||
data: serde_json::json!({}),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -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(|| {
|
||||
|
|
Loading…
Reference in a new issue