summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas O'Donnell <andytom@users.noreply.github.com>2019-10-13 06:16:56 +0200
committerMatan Kushner <hello@matchai.me>2019-10-13 13:16:56 +0900
commitcc68dec795b2388c2f1d7bf5326aad4273fa474b (patch)
tree3a5992f1bb935a0603e30b6148772566e74d6f80 /src
parent8f6b0e87109639b56b5019cf0b50063f0295ff2b (diff)
refactor: Refactor Go module to the new module config (#525)
Diffstat (limited to 'src')
-rw-r--r--src/configs/go.rs23
-rw-r--r--src/configs/mod.rs1
-rw-r--r--src/modules/golang.rs18
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)
}