more sensible code
This commit is contained in:
parent
4eca128f2c
commit
b0144c5d07
96
src/main.rs
96
src/main.rs
@ -2,15 +2,66 @@ 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 std::env::args as args;
|
||||||
use colored::Colorize;
|
use colored::Colorize;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::ffi::OsString;
|
||||||
|
|
||||||
|
fn get_shell_char (shell: String) -> String {
|
||||||
|
let shell_char = match shell.as_str() {
|
||||||
|
"bash"|"/bin/bash"
|
||||||
|
=> "",
|
||||||
|
"zsh"|"/bin/zsh"|"/usr/bin/zsh"
|
||||||
|
=> "",
|
||||||
|
"fish"
|
||||||
|
=> "",
|
||||||
|
"nushell"
|
||||||
|
=> "",
|
||||||
|
"ion"
|
||||||
|
=> "",
|
||||||
|
"oursh"
|
||||||
|
=> "",
|
||||||
|
_
|
||||||
|
=> "",
|
||||||
|
};
|
||||||
|
shell_char.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn abrev_path (pwd: PathBuf, homedir: String) -> String {
|
||||||
|
let mut path = pwd.display().to_string();
|
||||||
|
path = path.replace(&homedir, "~"); // Abreviate homedir with "~"
|
||||||
|
let mut short_dir = path.clone();
|
||||||
|
|
||||||
|
let slashes = path.matches("/").count();
|
||||||
|
|
||||||
|
if slashes > 3 {
|
||||||
|
let parts: Vec<&str> = path.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
|
||||||
|
short_dir = short_dir.replace(part, &fch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
short_dir
|
||||||
|
}
|
||||||
|
|
||||||
|
fn root_user (user: Option<OsString>) -> bool {
|
||||||
|
let u = user.expect("UnknownUser").to_str().expect("UnknownUser").to_string();
|
||||||
|
if u == "root"
|
||||||
|
{ true }
|
||||||
|
else
|
||||||
|
{ false }
|
||||||
|
}
|
||||||
|
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
let angle = "❯";
|
let angle = "❯";
|
||||||
let pwd = current_dir()?;
|
let pwd = current_dir()?;
|
||||||
let mut dir = pwd.display().to_string();
|
|
||||||
let args: Vec<String> = args().collect();
|
let args: Vec<String> = args().collect();
|
||||||
let shell: String;
|
let shell: String;
|
||||||
let user = var_os("USER").expect("noDir").to_str().expect("noDir").to_string();
|
let user = var_os("USER"); //.expect("UnknownUser").to_str().expect("UnknownUser").to_string();
|
||||||
let homedir = var_os("HOME").expect("noDir").to_str().expect("noDir").to_string();
|
//let user = var_os("USER").expect("UnknownUser").to_str().expect("UnknownUser").to_string();
|
||||||
|
let homedir = var_os("HOME").expect("UnknownDir").to_str().expect("UnknownDir").to_string();
|
||||||
|
|
||||||
if args.len() > 1 {
|
if args.len() > 1 {
|
||||||
shell = args[1].clone();
|
shell = args[1].clone();
|
||||||
@ -18,41 +69,14 @@ fn main() -> std::io::Result<()> {
|
|||||||
else {
|
else {
|
||||||
shell = "none".to_string();
|
shell = "none".to_string();
|
||||||
}
|
}
|
||||||
|
//if root_user(user) {
|
||||||
let shell_char = match shell.as_str() {
|
// println!("heh");
|
||||||
"bash" => "",
|
//}
|
||||||
"zsh" => "",
|
|
||||||
"fish" => "",
|
|
||||||
"nushell" => "",
|
|
||||||
"ion" => "",
|
|
||||||
_ => "",
|
|
||||||
};
|
|
||||||
|
|
||||||
dir = str::replace(&dir, &homedir, "~"); // Abreviate homedir with "~"
|
|
||||||
|
|
||||||
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!("{} {}{} ",
|
print!("{} {}{} ",
|
||||||
shell_char.truecolor(75,75,75),
|
get_shell_char(shell).truecolor(75,75,75),
|
||||||
dir0.italic().truecolor(75,75,75),
|
abrev_path(pwd,homedir).italic().truecolor(75,75,75),
|
||||||
angle.truecolor(0, 255, 180),
|
angle.truecolor(0, 255, 180),
|
||||||
);
|
);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user