use yansi::Color;
#[derive(Copy, Clone)]
pub struct Theme {
pub warning: Color,
pub error: Color,
pub workspace: Color,
pub name: Color,
pub version: Color,
pub yanked: Color,
pub created_at: Color,
pub license: Color,
pub is_not_published: Color,
pub no_default_features: Color,
pub no_features: Color,
pub no_optional_deps: Color,
pub no_required_deps: Color,
pub no_dev_deps: Color,
pub no_build_deps: Color,
pub has_enabled_features: Color,
pub features: Color,
pub feature_name: Color,
pub feature_implies: Color,
pub probably_internal: Color,
pub default: Color,
pub required_deps: Color,
pub optional_deps: Color,
pub normal_deps: Color,
pub dev_deps: Color,
pub build_deps: Color,
pub renamed: Color,
pub renamed_target: Color,
pub target: Color,
pub dep_feature: Color,
pub tree: Color,
}
impl std::fmt::Debug for Theme {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Theme").finish()
}
}
impl Theme {
pub const fn basic() -> Self {
BASIC_THEME
}
pub const fn colorful() -> Self {
DEFAULT_THEME
}
pub const fn palette() -> Self {
PALETTE_THEME
}
pub const fn none() -> Self {
NO_THEME
}
}
impl Default for Theme {
fn default() -> Self {
PALETTE_THEME
}
}
const NO_THEME: Theme = Theme {
warning: Color::Unset,
error: Color::Unset,
workspace: Color::Unset,
name: Color::Unset,
version: Color::Unset,
yanked: Color::Unset,
created_at: Color::Unset,
license: Color::Unset,
is_not_published: Color::Unset,
no_default_features: Color::Unset,
no_features: Color::Unset,
no_optional_deps: Color::Unset,
no_required_deps: Color::Unset,
no_dev_deps: Color::Unset,
no_build_deps: Color::Unset,
has_enabled_features: Color::Unset,
features: Color::Unset,
feature_name: Color::Unset,
feature_implies: Color::Unset,
probably_internal: Color::Unset,
default: Color::Unset,
required_deps: Color::Unset,
optional_deps: Color::Unset,
normal_deps: Color::Unset,
dev_deps: Color::Unset,
build_deps: Color::Unset,
renamed: Color::Unset,
renamed_target: Color::Unset,
target: Color::Unset,
dep_feature: Color::Unset,
tree: Color::Unset,
};
const DEFAULT_THEME: Theme = Theme {
warning: Color::RGB(255, 255, 0),
error: Color::RGB(255, 0, 0),
workspace: Color::RGB(255, 192, 192),
name: Color::RGB(255, 192, 128),
version: Color::RGB(192, 192, 0),
yanked: Color::RGB(255, 0, 0),
created_at: Color::RGB(255, 255, 255),
license: Color::RGB(255, 255, 255),
is_not_published: Color::RGB(0, 153, 238),
no_default_features: Color::RGB(255, 128, 128),
no_features: Color::RGB(192, 192, 192),
no_optional_deps: Color::RGB(192, 128, 128),
no_required_deps: Color::RGB(192, 192, 192),
no_dev_deps: Color::RGB(192, 192, 192),
no_build_deps: Color::RGB(192, 192, 192),
has_enabled_features: Color::RGB(0, 153, 238),
features: Color::RGB(192, 0, 192),
feature_name: Color::RGB(255, 255, 255),
feature_implies: Color::RGB(192, 192, 255),
probably_internal: Color::RGB(128, 32, 32),
default: Color::RGB(0, 255, 0),
required_deps: Color::RGB(192, 0, 255),
optional_deps: Color::RGB(255, 0, 192),
normal_deps: Color::RGB(255, 124, 201),
dev_deps: Color::RGB(255, 124, 201),
build_deps: Color::RGB(255, 124, 201),
renamed: Color::RGB(0, 153, 238),
renamed_target: Color::RGB(92, 64, 255),
target: Color::RGB(192, 0, 0),
dep_feature: Color::RGB(128, 128, 128),
tree: Color::RGB(48, 48, 48),
};
const BASIC_THEME: Theme = Theme {
warning: Color::RGB(255, 255, 0),
error: Color::RGB(255, 0, 0),
workspace: Color::RGB(255, 192, 192),
name: Color::RGB(255, 192, 128),
yanked: Color::RGB(255, 0, 0),
feature_implies: Color::RGB(192, 192, 255),
default: Color::RGB(0, 255, 0),
tree: Color::RGB(48, 48, 48),
..NO_THEME
};
const PALETTE_THEME: Theme = Theme {
warning: Color::Red,
error: Color::Yellow,
name: Color::Blue,
version: Color::Green,
yanked: Color::Red,
is_not_published: Color::Yellow,
no_default_features: Color::Magenta,
has_enabled_features: Color::Cyan,
feature_implies: Color::Cyan,
probably_internal: Color::Red,
default: Color::Yellow,
required_deps: Color::Blue,
optional_deps: Color::Magenta,
renamed: Color::Red,
renamed_target: Color::Yellow,
target: Color::Yellow,
dep_feature: Color::Green,
..NO_THEME
};