From 4eca128f2c8605d4a3e8b33121aae9ac8e1ac4a3 Mon Sep 17 00:00:00 2001 From: candifloss Date: Wed, 14 Aug 2024 16:49:47 +0530 Subject: [PATCH] Abreviate pwd --- src/main.rs | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8228dd6..95f484d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,22 +1,24 @@ use std::env::current_dir as current_dir; -//use std::env::var_os as var_os; +use std::env::var_os as var_os; use std::env::args as args; use colored::Colorize; fn main() -> std::io::Result<()> { let angle = "❯"; let pwd = current_dir()?; - let dir = pwd.display().to_string(); + let mut dir = pwd.display().to_string(); let args: Vec = args().collect(); let shell: String; - + let user = var_os("USER").expect("noDir").to_str().expect("noDir").to_string(); + let homedir = var_os("HOME").expect("noDir").to_str().expect("noDir").to_string(); + if args.len() > 1 { shell = args[1].clone(); } else { shell = "none".to_string(); } - + let shell_char = match shell.as_str() { "bash" => "", "zsh" => "󰰶", @@ -25,20 +27,31 @@ fn main() -> std::io::Result<()> { "ion" => "", _ => "󱆃", }; + + dir = str::replace(&dir, &homedir, "~"); // Abreviate homedir with "~" - /* - match var_os(USER).as_str() { - "root" => { - shell_char = shell_char.truecolor(255,53,94); - }, - _ => { - shell_char = shell_char.truecolor(54,178,91); + let mut dir0 = dir.clone(); + let slashes = dir.matches("/").count(); + //println!("{}",slashes); + + if slashes > 3 { + // let mut dir0 = dir; + let parts: Vec<&str> = dir.split("/").collect(); + let len = parts.len() - 1; + let mut fch: String; + + for p in &parts[0..len] { + let part = p; + fch = part.chars().next().expect("REASON").to_string(); //1st char of p + dir0 = str::replace(&dir0, part, &fch); + //println!("{}__{}__{}",p,fch,dir0); } - }*/ - + } + //dir = dir0; + print!("{} {}{} ", shell_char.truecolor(75,75,75), - dir.italic().truecolor(75,75,75), + dir0.italic().truecolor(75,75,75), angle.truecolor(0, 255, 180), ); Ok(())