From 472b66894d10e5be9cfb5a40b79dc61e746c0795 Mon Sep 17 00:00:00 2001 From: Matan Kushner Date: Thu, 4 Apr 2019 20:35:35 -0400 Subject: Rename segements --- src/main.rs | 1 - src/modules/dir.rs | 63 ----------------------------------------------- src/modules/directory.rs | 63 +++++++++++++++++++++++++++++++++++++++++++++++ src/modules/line_break.rs | 13 ++++++++++ src/modules/line_sep.rs | 13 ---------- src/modules/mod.rs | 10 ++++---- src/print.rs | 2 +- 7 files changed, 82 insertions(+), 83 deletions(-) delete mode 100644 src/modules/dir.rs create mode 100644 src/modules/directory.rs create mode 100644 src/modules/line_break.rs delete mode 100644 src/modules/line_sep.rs (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 7b10ddeba..2f41fb5dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,5 @@ #[macro_use] extern crate clap; -extern crate rayon; extern crate ansi_term; extern crate dirs; diff --git a/src/modules/dir.rs b/src/modules/dir.rs deleted file mode 100644 index 098d0f14e..000000000 --- a/src/modules/dir.rs +++ /dev/null @@ -1,63 +0,0 @@ -use super::Segment; -use dirs; -use std::env; -use ansi_term::{Color, Style}; -use clap::ArgMatches; - -/// Creates a segment with the current directory -pub fn segment(_: &ArgMatches) -> Segment { - const COLOR_DIR: Color = Color::Cyan; - const HOME_SYMBOL: char = '~'; - - let current_dir = env::current_dir().unwrap(); - let mut dir_string = String::from(current_dir.to_str().unwrap()); - - if let Some(home_dir) = dirs::home_dir() { - if current_dir.starts_with(&home_dir) { - let current_dir = current_dir.to_str().unwrap(); - let home_dir = home_dir.to_str().unwrap(); - - dir_string = current_dir.replace(home_dir, &HOME_SYMBOL.to_string()); - } - } - - Segment { - value: dir_string, - style: Style::from(COLOR_DIR).bold(), - ..Default::default() - } -} - -#[cfg(test)] -mod tests { - // TODO: Look into stubbing `env` so that tests can be run in parallel - use super::*; - use clap::{App, Arg}; - use std::path::Path; - - #[test] - fn truncate_home_dir() { - let args = App::new("starship") - .arg(Arg::with_name("status_code")) - .get_matches_from(vec!["starship", "0"]); - - let home_dir = dirs::home_dir().unwrap(); - env::set_current_dir(&home_dir).unwrap(); - - let segment = segment(&args); - assert_eq!(segment.value, "~"); - } - - #[test] - fn dont_truncate_non_home_dir() { - let args = App::new("starship") - .arg(Arg::with_name("status_code")) - .get_matches_from(vec!["starship", "0"]); - - let root_dir = Path::new("/"); - env::set_current_dir(&root_dir).unwrap(); - - let segment = segment(&args); - assert_eq!(segment.value, "/"); - } -} diff --git a/src/modules/directory.rs b/src/modules/directory.rs new file mode 100644 index 000000000..098d0f14e --- /dev/null +++ b/src/modules/directory.rs @@ -0,0 +1,63 @@ +use super::Segment; +use dirs; +use std::env; +use ansi_term::{Color, Style}; +use clap::ArgMatches; + +/// Creates a segment with the current directory +pub fn segment(_: &ArgMatches) -> Segment { + const COLOR_DIR: Color = Color::Cyan; + const HOME_SYMBOL: char = '~'; + + let current_dir = env::current_dir().unwrap(); + let mut dir_string = String::from(current_dir.to_str().unwrap()); + + if let Some(home_dir) = dirs::home_dir() { + if current_dir.starts_with(&home_dir) { + let current_dir = current_dir.to_str().unwrap(); + let home_dir = home_dir.to_str().unwrap(); + + dir_string = current_dir.replace(home_dir, &HOME_SYMBOL.to_string()); + } + } + + Segment { + value: dir_string, + style: Style::from(COLOR_DIR).bold(), + ..Default::default() + } +} + +#[cfg(test)] +mod tests { + // TODO: Look into stubbing `env` so that tests can be run in parallel + use super::*; + use clap::{App, Arg}; + use std::path::Path; + + #[test] + fn truncate_home_dir() { + let args = App::new("starship") + .arg(Arg::with_name("status_code")) + .get_matches_from(vec!["starship", "0"]); + + let home_dir = dirs::home_dir().unwrap(); + env::set_current_dir(&home_dir).unwrap(); + + let segment = segment(&args); + assert_eq!(segment.value, "~"); + } + + #[test] + fn dont_truncate_non_home_dir() { + let args = App::new("starship") + .arg(Arg::with_name("status_code")) + .get_matches_from(vec!["starship", "0"]); + + let root_dir = Path::new("/"); + env::set_current_dir(&root_dir).unwrap(); + + let segment = segment(&args); + assert_eq!(segment.value, "/"); + } +} diff --git a/src/modules/line_break.rs b/src/modules/line_break.rs new file mode 100644 index 000000000..dda14b8f8 --- /dev/null +++ b/src/modules/line_break.rs @@ -0,0 +1,13 @@ +use super::Segment; +use clap::ArgMatches; + +/// Creates a segment for the line break +pub fn segment(_: &ArgMatches) -> Segment { + const LINE_ENDING: &str = "\n"; + + Segment { + value: String::from(LINE_ENDING), + suffix: None, + ..Default::default() + } +} diff --git a/src/modules/line_sep.rs b/src/modules/line_sep.rs deleted file mode 100644 index dda14b8f8..000000000 --- a/src/modules/line_sep.rs +++ /dev/null @@ -1,13 +0,0 @@ -use super::Segment; -use clap::ArgMatches; - -/// Creates a segment for the line break -pub fn segment(_: &ArgMatches) -> Segment { - const LINE_ENDING: &str = "\n"; - - Segment { - value: String::from(LINE_ENDING), - suffix: None, - ..Default::default() - } -} diff --git a/src/modules/mod.rs b/src/modules/mod.rs index e55ac6366..61447890e 100644 --- a/src/modules/mod.rs +++ b/src/modules/mod.rs @@ -1,6 +1,6 @@ mod char; -mod dir; -mod line_sep; +mod directory; +mod line_break; use clap::ArgMatches; use ansi_term::Style; @@ -32,9 +32,9 @@ impl Default for Segment { pub fn handle(module: &str, args: &ArgMatches) -> Segment { match module { - "char" => char::segment(&args), - "dir" => dir::segment(&args), - "line_sep" => line_sep::segment(&args), + "char" | "character" => char::segment(&args), + "dir" | "directory" => directory::segment(&args), + "line_break" => line_break::segment(&args), _ => panic!("Unknown module: {}", module), } diff --git a/src/print.rs b/src/print.rs index 50c691da2..b4ce7ab75 100644 --- a/src/print.rs +++ b/src/print.rs @@ -3,7 +3,7 @@ use crate::modules::Segment; use clap::ArgMatches; pub fn prompt(args: ArgMatches) { - let default_prompt = vec!["dir", "line_sep", "char"]; + let default_prompt = vec!["directory", "line_break", "character"]; default_prompt.into_iter() .map(|module| modules::handle(module, &args)) -- cgit v1.2.3