diff options
author | Thomas O'Donnell <andytom@users.noreply.github.com> | 2019-10-13 06:16:56 +0200 |
---|---|---|
committer | Matan Kushner <hello@matchai.me> | 2019-10-13 13:16:56 +0900 |
commit | cc68dec795b2388c2f1d7bf5326aad4273fa474b (patch) | |
tree | 3a5992f1bb935a0603e30b6148772566e74d6f80 /src | |
parent | 8f6b0e87109639b56b5019cf0b50063f0295ff2b (diff) |
refactor: Refactor Go module to the new module config (#525)
Diffstat (limited to 'src')
-rw-r--r-- | src/configs/go.rs | 23 | ||||
-rw-r--r-- | src/configs/mod.rs | 1 | ||||
-rw-r--r-- | src/modules/golang.rs | 18 |
3 files changed, 32 insertions, 10 deletions
diff --git a/src/configs/go.rs b/src/configs/go.rs new file mode 100644 index 000000000..271e90217 --- /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 c2f0ab083..40ed6293d 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 9bbf0c16b..0884a5791 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<Module<'a>> { 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) } |