From ee0a5d5fc9e420b29386ff2a6c0809b619696649 Mon Sep 17 00:00:00 2001 From: Pistonight Date: Sun, 25 Jan 2026 14:59:27 -0800 Subject: [PATCH] fix(various): spinner not configurable and macro errors --- packages/copper-proc-macros/Cargo.toml | 4 ++-- packages/copper/Cargo.toml | 8 ++++---- packages/copper/src/errhand.rs | 12 ++++++------ packages/copper/src/process/pio/spinner.rs | 14 ++++++++++++++ packages/promethium/Cargo.toml | 6 +++--- 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/packages/copper-proc-macros/Cargo.toml b/packages/copper-proc-macros/Cargo.toml index ed2dd20..3119d30 100644 --- a/packages/copper-proc-macros/Cargo.toml +++ b/packages/copper-proc-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pistonite-cu-proc-macros" -version = "0.2.5" +version = "0.2.6" edition = "2024" description = "Proc-macros for Cu" repository = "https://github.com/Pistonite/cu" @@ -12,7 +12,7 @@ exclude = [ [dependencies.pm] package = "pistonite-pm" -version = "0.2.4" +version = "0.2.5" path = "../promethium" features = ["full"] diff --git a/packages/copper/Cargo.toml b/packages/copper/Cargo.toml index 3dee496..da37f83 100644 --- a/packages/copper/Cargo.toml +++ b/packages/copper/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pistonite-cu" -version = "0.7.1" +version = "0.7.2" edition = "2024" description = "Battery-included common utils to speed up development of rust tools" repository = "https://github.com/Pistonite/cu" @@ -11,14 +11,14 @@ exclude = [ ] [dependencies] -pistonite-cu-proc-macros = { version = "0.2.5", path = "../copper-proc-macros" } +pistonite-cu-proc-macros = { version = "0.2.6", path = "../copper-proc-macros" } # --- Always enabled --- anyhow = "1.0.100" log = "0.4.29" # --- Command Line Interface --- -oneshot = { version = "0.1.11", optional = true } +oneshot = { version = "0.1.12", optional = true } env_filter = { version = "0.1.4", optional = true } terminal_size = { version = "0.4.3", optional = true } unicode-width = { version = "0.2.2", features = ["cjk"], optional = true } @@ -36,7 +36,7 @@ tokio = { version = "1.49.0", optional = true, features = [ dunce = {version="1.0.5", optional = true} which = {version = "8.0.0", optional = true } pathdiff = {version = "0.2.3", optional=true} -filetime = { version = "0.2.26", optional = true} +filetime = { version = "0.2.27", optional = true} glob = { version = "0.3.3", optional = true } spin = {version = "0.10.0", optional = true} # for PIO diff --git a/packages/copper/src/errhand.rs b/packages/copper/src/errhand.rs index e75fc8a..b05f720 100644 --- a/packages/copper/src/errhand.rs +++ b/packages/copper/src/errhand.rs @@ -170,10 +170,10 @@ macro_rules! rethrow { /// and return an error instead of panicking #[macro_export] macro_rules! unimplemented { - () => { + () => {{ $crate::trace!("unexpected: not implemented reached"); - return $crate::Error::msg("not implemented"); - }; + return Err($crate::Error::msg("not implemented")); + }}; ($($args:tt)*) => {{ let msg = format!("{}", format_args!($(args)*)); $crate::trace!("unexpected: not implemented reached: {msg}"); @@ -186,10 +186,10 @@ macro_rules! unimplemented { /// This might be less performant in release builds #[macro_export] macro_rules! unreachable { - () => { + () => {{ $crate::trace!("unexpected: entered unreachable code"); - return $crate::Error::msg("unreachable"); - }; + return Err($crate::Error::msg("unreachable")); + }}; ($($args:tt)*) => {{ let msg = format!("{}", format_args!($(args)*)); $crate::trace!("unexpected: entered unreachable code: {msg}"); diff --git a/packages/copper/src/process/pio/spinner.rs b/packages/copper/src/process/pio/spinner.rs index 06e966a..6bb5a44 100644 --- a/packages/copper/src/process/pio/spinner.rs +++ b/packages/copper/src/process/pio/spinner.rs @@ -93,6 +93,20 @@ impl Spinner { pub fn debug(self) -> Self { self.config.lv.set(crate::lv::D); self } /// Print any non-progress outputs as trace messages pub fn trace(self) -> Self { self.config.lv.set(crate::lv::T); self } + + /// Configure the progress bar that will be spawned + #[inline(always)] + pub fn configure_spinner ProgressBarBuilder>( + self, + f: F, + ) -> Self { + let mut bar = self.config.bar.lock(); + if let Err(builder) = bar.clone() { + *bar = Err(f(builder)); + } + drop(bar); + self + } } struct SpinnerInner { lv: Atomic, diff --git a/packages/promethium/Cargo.toml b/packages/promethium/Cargo.toml index 5d5e0c6..677048c 100644 --- a/packages/promethium/Cargo.toml +++ b/packages/promethium/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pistonite-pm" -version = "0.2.4" +version = "0.2.5" edition = "2024" description = "Procedural Macro Common Utils" repository = "https://github.com/Pistonite/cu" @@ -11,8 +11,8 @@ exclude = [ ] [dependencies] -proc-macro2 = { version = "1.0.105", default-features = false } -quote = { version = "1.0.43", default-features = false } +proc-macro2 = { version = "1.0.106", default-features = false } +quote = { version = "1.0.44", default-features = false } syn = { version = "2.0.114", default-features = false } [features]