diff --git a/src/configs/go.rs b/src/configs/go.rs new file mode 100644 index 00000000..271e9021 --- /dev/null +++ b/src/configs/go.rs @@ -0,0 +1,23 @@ +use crate::config::{ModuleConfig, RootModuleConfig, SegmentConfig}; + +use ansi_term::{Color, Style}; +use starship_module_config_derive::ModuleConfig; + +#[derive(Clone, ModuleConfig)] +pub struct GoConfig<'a> { + pub symbol: SegmentConfig<'a>, + pub version: SegmentConfig<'a>, + pub style: Style, + pub disabled: bool, +} + +impl<'a> RootModuleConfig<'a> for GoConfig<'a> { + fn new() -> Self { + GoConfig { + symbol: SegmentConfig::new("🐹 "), + version: SegmentConfig::default(), + style: Color::Cyan.bold(), + disabled: false, + } + } +} diff --git a/src/configs/mod.rs b/src/configs/mod.rs index c2f0ab08..40ed6293 100644 --- a/src/configs/mod.rs +++ b/src/configs/mod.rs @@ -3,6 +3,7 @@ pub mod battery; pub mod character; pub mod conda; pub mod dotnet; +pub mod go; pub mod hostname; pub mod jobs; pub mod kubernetes; diff --git a/src/modules/golang.rs b/src/modules/golang.rs index 9bbf0c16..0884a579 100644 --- a/src/modules/golang.rs +++ b/src/modules/golang.rs @@ -1,7 +1,8 @@ -use ansi_term::Color; use std::process::Command; -use super::{Context, Module}; +use super::{Context, Module, RootModuleConfig}; + +use crate::configs::go::GoConfig; /// Creates a module with the current Go version /// @@ -27,17 +28,14 @@ pub fn module<'a>(context: &'a Context) -> Option> { match get_go_version() { Some(go_version) => { - const GO_CHAR: &str = "🐹 "; - let mut module = context.new_module("golang"); - let module_style = module - .config_value_style("style") - .unwrap_or_else(|| Color::Cyan.bold()); - module.set_style(module_style); + let config: GoConfig = GoConfig::try_load(module.config); + + module.set_style(config.style); + module.create_segment("symbol", &config.symbol); let formatted_version = format_go_version(&go_version)?; - module.new_segment("symbol", GO_CHAR); - module.new_segment("version", &formatted_version); + module.create_segment("version", &config.version.with_value(&formatted_version)); Some(module) }