summaryrefslogtreecommitdiffstats
path: root/src/modules/directory.rs
diff options
context:
space:
mode:
authorAppleTheGolden <scotsbox@protonmail.com>2019-12-09 18:59:02 +0100
committerMatan Kushner <hello@matchai.me>2019-12-09 12:59:02 -0500
commit3c835ba34bb98dff237d04abefc228600df730d0 (patch)
tree0879f124141b83516a7711eac2a7ca4392ad971b /src/modules/directory.rs
parent60a131952424ba9682e49aae701b73ce8f487d2e (diff)
fix: Truncate long paths in conda environment names (#694)
Environment names created via conda create -p [path] tend to be too long for comfort, so this truncates them.
Diffstat (limited to 'src/modules/directory.rs')
-rw-r--r--src/modules/directory.rs67
1 files changed, 1 insertions, 66 deletions
diff --git a/src/modules/directory.rs b/src/modules/directory.rs
index a221515e2..61484c17d 100644
--- a/src/modules/directory.rs
+++ b/src/modules/directory.rs
@@ -4,6 +4,7 @@ use unicode_segmentation::UnicodeSegmentation;
use super::{Context, Module};
+use super::utils::directory::truncate;
use crate::config::{RootModuleConfig, SegmentConfig};
use crate::configs::directory::DirectoryConfig;
@@ -137,30 +138,6 @@ const fn replace_c_dir(path: String) -> String {
path
}
-/// Truncate a path to only have a set number of path components
-///
-/// Will truncate a path to only show the last `length` components in a path.
-/// If a length of `0` is provided, the path will not be truncated.
-fn truncate(dir_string: String, length: usize) -> String {
- if length == 0 {
- return dir_string;
- }
-
- let mut components = dir_string.split('/').collect::<Vec<&str>>();
-
- // If the first element is "" then there was a leading "/" and we should remove it so we can check the actual count of components
- if components[0] == "" {
- components.remove(0);
- }
-
- if components.len() <= length {
- return dir_string;
- }
-
- let truncated_components = &components[components.len() - length..];
- truncated_components.join("/")
-}
-
/// Takes part before contracted path and replaces it with fish style path
///
/// Will take the first letter of each directory before the contracted path and
@@ -259,48 +236,6 @@ mod tests {
}
#[test]
- fn truncate_smaller_path_than_provided_length() {
- let path = "~/starship";
- let output = truncate(path.to_string(), 3);
- assert_eq!(output, "~/starship")
- }
-
- #[test]
- fn truncate_same_path_as_provided_length() {
- let path = "~/starship/engines";
- let output = truncate(path.to_string(), 3);
- assert_eq!(output, "~/starship/engines")
- }
-
- #[test]
- fn truncate_slightly_larger_path_than_provided_length() {
- let path = "~/starship/engines/booster";
- let output = truncate(path.to_string(), 3);
- assert_eq!(output, "starship/engines/booster")
- }
-
- #[test]
- fn truncate_larger_path_than_provided_length() {
- let path = "~/starship/engines/booster/rocket";
- let output = truncate(path.to_string(), 3);
- assert_eq!(output, "engines/booster/rocket")
- }
-
- #[test]
- fn truncate_same_path_as_provided_length_from_root() {
- let path = "/starship/engines/booster";
- let output = truncate(path.to_string(), 3);
- assert_eq!(output, "/starship/engines/booster");
- }
-
- #[test]
- fn truncate_larger_path_than_provided_length_from_root() {
- let path = "/starship/engines/booster/rocket";
- let output = truncate(path.to_string(), 3);
- assert_eq!(output, "engines/booster/rocket");
- }
-
- #[test]
fn fish_style_with_user_home_contracted_path() {
let path = "~/starship/engines/booster/rocket";
let output = to_fish_style(1, path.to_string(), "engines/booster/rocket");