From dd0b1a1aa2c36bf2df4db9c11a6517a018ffa100 Mon Sep 17 00:00:00 2001 From: Zhenhui Xie Date: Mon, 30 Sep 2019 20:10:35 +0800 Subject: refactor: Refactoring config (#383) This PR refactors config and puts configuration files for all modules in `configs/`. --- src/modules/package.rs | 166 ------------------------------------------------- 1 file changed, 166 deletions(-) delete mode 100644 src/modules/package.rs (limited to 'src/modules/package.rs') diff --git a/src/modules/package.rs b/src/modules/package.rs deleted file mode 100644 index 0debe162d..000000000 --- a/src/modules/package.rs +++ /dev/null @@ -1,166 +0,0 @@ -use super::{Context, Module}; -use crate::utils; - -use ansi_term::Color; -use serde_json as json; -use toml; - -/// Creates a module with the current package version -/// -/// Will display if a version is defined for your Node.js or Rust project (if one exists) -pub fn module<'a>(context: &'a Context) -> Option> { - match get_package_version() { - Some(package_version) => { - const PACKAGE_CHAR: &str = "📦 "; - - let mut module = context.new_module("package"); - let module_style = module - .config_value_style("style") - .unwrap_or_else(|| Color::Red.bold()); - module.set_style(module_style); - module.get_prefix().set_value("is "); - - module.new_segment("symbol", PACKAGE_CHAR); - module.new_segment("version", &package_version); - - Some(module) - } - None => None, - } -} - -fn extract_cargo_version(file_contents: &str) -> Option { - let cargo_toml: toml::Value = toml::from_str(file_contents).ok()?; - let raw_version = cargo_toml.get("package")?.get("version")?.as_str()?; - - let formatted_version = format_version(raw_version); - Some(formatted_version) -} - -fn extract_package_version(file_contents: &str) -> Option { - let package_json: json::Value = json::from_str(file_contents).ok()?; - let raw_version = package_json.get("version")?.as_str()?; - if raw_version == "null" { - return None; - }; - - let formatted_version = format_version(raw_version); - Some(formatted_version) -} - -fn extract_poetry_version(file_contents: &str) -> Option { - let poetry_toml: toml::Value = toml::from_str(file_contents).ok()?; - let raw_version = poetry_toml - .get("tool")? - .get("poetry")? - .get("version")? - .as_str()?; - - let formatted_version = format_version(raw_version); - Some(formatted_version) -} - -fn get_package_version() -> Option { - if let Ok(cargo_toml) = utils::read_file("Cargo.toml") { - extract_cargo_version(&cargo_toml) - } else if let Ok(package_json) = utils::read_file("package.json") { - extract_package_version(&package_json) - } else if let Ok(poetry_toml) = utils::read_file("pyproject.toml") { - extract_poetry_version(&poetry_toml) - } else { - None - } -} - -fn format_version(version: &str) -> String { - format!("v{}", version.replace('"', "").trim()) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_format_version() { - assert_eq!(format_version("0.1.0"), "v0.1.0"); - } - - #[test] - fn test_extract_cargo_version() { - let cargo_with_version = toml::toml! { - [package] - name = "starship" - version = "0.1.0" - } - .to_string(); - - let expected_version = Some("v0.1.0".to_string()); - assert_eq!(extract_cargo_version(&cargo_with_version), expected_version); - - let cargo_without_version = toml::toml! { - [package] - name = "starship" - } - .to_string(); - - let expected_version = None; - assert_eq!( - extract_cargo_version(&cargo_without_version), - expected_version - ); - } - - #[test] - fn test_extract_package_version() { - let package_with_version = json::json!({ - "name": "spacefish", - "version": "0.1.0" - }) - .to_string(); - - let expected_version = Some("v0.1.0".to_string()); - assert_eq!( - extract_package_version(&package_with_version), - expected_version - ); - - let package_without_version = json::json!({ - "name": "spacefish" - }) - .to_string(); - - let expected_version = None; - assert_eq!( - extract_package_version(&package_without_version), - expected_version - ); - } - - #[test] - fn test_extract_poetry_version() { - let poetry_with_version = toml::toml! { - [tool.poetry] - name = "starship" - version = "0.1.0" - } - .to_string(); - - let expected_version = Some("v0.1.0".to_string()); - assert_eq!( - extract_poetry_version(&poetry_with_version), - expected_version - ); - - let poetry_without_version = toml::toml! { - [tool.poetry] - name = "starship" - } - .to_string(); - - let expected_version = None; - assert_eq!( - extract_poetry_version(&poetry_without_version), - expected_version - ); - } -} -- cgit v1.2.3