mirror of
https://github.com/pesde-pkg/pesde.git
synced 2025-04-18 10:53:56 +01:00
Switches the `colored` crate to the `console` crate. Additionally, to optimize the compiled program's size switches the `inquire` crate's backend from `crossterm` to `console`. Console was picked out because we depend on `indicatif` which only supports `console`. Also switches from `winreg` to `windows-registry`, which `reqwest` depends on to optimize size even further. Currently has to duplicate dependencies, as `reqwest` depends on an older version but will become optimized once `reqwest` updates to the latest version of the crate. Signed-off-by: daimond113 <contact@daimond113.com>
54 lines
1.2 KiB
Rust
54 lines
1.2 KiB
Rust
use console::{Style, StyledObject};
|
|
use paste::paste;
|
|
use std::{fmt::Display, sync::LazyLock};
|
|
|
|
#[derive(Debug)]
|
|
pub struct LazyStyle<T>(LazyLock<T>);
|
|
|
|
impl LazyStyle<Style> {
|
|
pub fn apply_to<D>(&self, text: D) -> StyledObject<D> {
|
|
LazyLock::force(&self.0).apply_to(text)
|
|
}
|
|
}
|
|
|
|
impl<T: Display> Display for LazyStyle<T> {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
write!(f, "{}", LazyLock::force(&self.0))
|
|
}
|
|
}
|
|
|
|
macro_rules! make_style {
|
|
($name:ident, $color:ident) => {
|
|
make_style!($name, $color());
|
|
};
|
|
($name:ident, $($color:tt)+) => {
|
|
paste! {
|
|
pub static [<$name _STYLE>]: LazyStyle<Style> = LazyStyle(LazyLock::new(||
|
|
Style::new().$($color)+.bold()
|
|
));
|
|
}
|
|
};
|
|
}
|
|
|
|
macro_rules! make_prefix {
|
|
($name:ident) => {
|
|
paste! {
|
|
pub static [<$name:upper _PREFIX>]: LazyStyle<StyledObject<&'static str>> = LazyStyle(LazyLock::new(||
|
|
[<$name:upper _STYLE>].apply_to(stringify!($name))
|
|
));
|
|
}
|
|
};
|
|
}
|
|
|
|
pub const CLI_COLOR_256: u8 = 214;
|
|
|
|
make_style!(INFO, cyan);
|
|
make_style!(WARN, yellow);
|
|
make_prefix!(warn);
|
|
make_style!(ERROR, red);
|
|
make_prefix!(error);
|
|
make_style!(SUCCESS, green);
|
|
make_style!(CLI, color256(CLI_COLOR_256));
|
|
make_style!(ADDED, green);
|
|
make_style!(REMOVED, red);
|
|
make_style!(URL, blue().underlined());
|