From 13eee817576b211da3f54dc79aac919cfe2c9850 Mon Sep 17 00:00:00 2001 From: Elias Posen Date: Thu, 22 Aug 2024 12:05:16 +0200 Subject: [PATCH] polling spinner --- Cargo.lock | 89 ++++++++++++++++++++++++++++++++++--------- core/Cargo.toml | 1 + core/src/cmds/docs.rs | 8 ++++ 3 files changed, 79 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a97ba2c..2e73e1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -94,7 +94,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -105,7 +105,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -250,7 +250,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -361,7 +361,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -567,7 +567,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -931,6 +931,12 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + [[package]] name = "matchers" version = "0.1.0" @@ -1103,7 +1109,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -1189,7 +1195,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -1268,7 +1274,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", "version_check", "yansi", ] @@ -1320,7 +1326,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -1333,7 +1339,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -1412,7 +1418,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -1570,7 +1576,7 @@ dependencies = [ "proc-macro2", "quote", "rocket_http", - "syn", + "syn 2.0.72", "unicode-xid", "version_check", ] @@ -1741,7 +1747,7 @@ checksum = "692d6f5ac90220161d6774db30c662202721e64aed9058d2c394f451261420c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -1824,6 +1830,7 @@ dependencies = [ "serde_json", "serde_yaml", "sideko_rest_api", + "spinners", "tar", "tokio", "url", @@ -1895,6 +1902,17 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spinners" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0ef947f358b9c238923f764c72a4a9d42f2d637c46e059dbd319d6e7cfb4f82" +dependencies = [ + "lazy_static", + "maplit", + "strum", +] + [[package]] name = "stable-pattern" version = "0.1.0" @@ -1919,6 +1937,39 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.72" @@ -2015,7 +2066,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -2099,7 +2150,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -2205,7 +2256,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] [[package]] @@ -2409,7 +2460,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -2443,7 +2494,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2719,5 +2770,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.72", ] diff --git a/core/Cargo.toml b/core/Cargo.toml index 7a30f71..1328fb9 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -42,3 +42,4 @@ semver = "1.0.23" heck = "0.5.0" clap-markdown = "0.1.4" sideko_rest_api = "0.1.1" +spinners = "4.1.1" diff --git a/core/src/cmds/docs.rs b/core/src/cmds/docs.rs index d78080f..a73697b 100644 --- a/core/src/cmds/docs.rs +++ b/core/src/cmds/docs.rs @@ -18,6 +18,7 @@ use sideko_rest_api::{ }, Client as SidekoClient, }; +use spinners::{Spinner, Spinners}; pub async fn handle_list_docs() -> Result<()> { // check for updates after all other validation passed @@ -173,6 +174,8 @@ async fn poll_deployment(deployment: &Deployment) -> Result { .with_api_key_auth(&api_key); let mut current_status: DeploymentStatusEnum = deployment.status.clone(); + let mut sp = Spinner::new(Spinners::Dots, "Polling deployment...".into()); + loop { tokio::time::sleep(Duration::from_secs(2)).await; @@ -194,14 +197,18 @@ async fn poll_deployment(deployment: &Deployment) -> Result { let status_str = d.status.to_string(); if current_status.to_string() != status_str { + sp.stop_with_newline(); debug!("Deployment status updated to {}", &d.status); + sp = Spinner::new(Spinners::Dots, "Polling deployment...".into()); current_status = d.status.clone(); } if status_str == DeploymentStatusEnum::Cancelled.to_string() { + sp.stop_with_newline(); warn!("Deployment has been cancelled"); return Ok(d); } else if status_str == DeploymentStatusEnum::Error.to_string() { + sp.stop_with_newline(); return Err(Error::general_with_debug( "Deployment failed", &format!( @@ -211,6 +218,7 @@ async fn poll_deployment(deployment: &Deployment) -> Result { ), )); } else if status_str == DeploymentStatusEnum::Complete.to_string() { + sp.stop_with_newline(); return Ok(d); } }