summaryrefslogtreecommitdiffstats
path: root/src/modules/golang.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/golang.rs')
-rw-r--r--src/modules/golang.rs82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/modules/golang.rs b/src/modules/golang.rs
deleted file mode 100644
index 9bbf0c16b..000000000
--- a/src/modules/golang.rs
+++ /dev/null
@@ -1,82 +0,0 @@
-use ansi_term::Color;
-use std::process::Command;
-
-use super::{Context, Module};
-
-/// Creates a module with the current Go version
-///
-/// Will display the Go version if any of the following criteria are met:
-/// - Current directory contains a `go.mod` file
-/// - Current directory contains a `go.sum` file
-/// - Current directory contains a `glide.yaml` file
-/// - Current directory contains a `Gopkg.yml` file
-/// - Current directory contains a `Gopkg.lock` file
-/// - Current directory contains a `Godeps` directory
-/// - Current directory contains a file with the `.go` extension
-pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
- let is_go_project = context
- .try_begin_scan()?
- .set_files(&["go.mod", "go.sum", "glide.yaml", "Gopkg.yml", "Gopkg.lock"])
- .set_extensions(&["go"])
- .set_folders(&["Godeps"])
- .is_match();
-
- if !is_go_project {
- return None;
- }
-
- 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 formatted_version = format_go_version(&go_version)?;
- module.new_segment("symbol", GO_CHAR);
- module.new_segment("version", &formatted_version);
-
- Some(module)
- }
- None => None,
- }
-}
-
-fn get_go_version() -> Option<String> {
- Command::new("go")
- .arg("version")
- .output()
- .ok()
- .and_then(|output| String::from_utf8(output.stdout).ok())
-}
-
-fn format_go_version(go_stdout: &str) -> Option<String> {
- let version = go_stdout
- // split into ["", "1.12.4 linux/amd64"]
- .splitn(2, "go version go")
- // return "1.12.4 linux/amd64"
- .nth(1)?
- // split into ["1.12.4", "linux/amd64"]
- .split_whitespace()
- // return "1.12.4"
- .next()?;
-
- let mut formatted_version = String::with_capacity(version.len() + 1);
- formatted_version.push('v');
- formatted_version.push_str(version);
- Some(formatted_version)
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn test_format_go_version() {
- let input = "go version go1.12 darwin/amd64";
- assert_eq!(format_go_version(input), Some("v1.12".to_string()));
- }
-}