cargo fmt & corrections
This commit is contained in:
parent
22774c4e13
commit
1bb5f6c2b5
107
src/main.rs
107
src/main.rs
@ -1,23 +1,16 @@
|
|||||||
use std::env::{current_dir,var_os,args};
|
use colored::{ColoredString, Colorize};
|
||||||
use colored::{Colorize,ColoredString};
|
use std::env::{args, current_dir, var_os};
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
|
||||||
fn get_shell_char (shell: String) -> String {
|
fn get_shell_char(shell: &str) -> String {
|
||||||
let shell_char = match shell.as_str() {
|
let shell_char = match shell {
|
||||||
"bash" | "/bin/bash" | "/usr/bin/bash" | "-bash"
|
"bash" | "/bin/bash" | "/usr/bin/bash" | "-bash" => " ",
|
||||||
=> " ",
|
"zsh" | "/bin/zsh" | "/usr/bin/zsh" | "-zsh" => " ",
|
||||||
"zsh" | "/bin/zsh" | "/usr/bin/zsh" | "-zsh"
|
"fish" => " ",
|
||||||
=> " ",
|
"nushell" => " ",
|
||||||
"fish"
|
"ion" => " ",
|
||||||
=> " ",
|
"oursh" => " ",
|
||||||
"nushell"
|
_ => " ",
|
||||||
=> " ",
|
|
||||||
"ion"
|
|
||||||
=> " ",
|
|
||||||
"oursh"
|
|
||||||
=> " ",
|
|
||||||
_
|
|
||||||
=> " ",
|
|
||||||
};
|
};
|
||||||
shell_char.to_string()
|
shell_char.to_string()
|
||||||
}
|
}
|
||||||
@ -31,11 +24,12 @@ fn get_git_branch () -> String {
|
|||||||
let git_err = String::from_utf8_lossy(&git_status_cmd.stderr);
|
let git_err = String::from_utf8_lossy(&git_status_cmd.stderr);
|
||||||
|
|
||||||
if git_err == "" {
|
if git_err == "" {
|
||||||
git_status_output.split("\n").collect::<Vec<&str>>()[0]
|
git_status_output.split('\n').collect::<Vec<&str>>()[0]
|
||||||
.split(" ").collect::<Vec<&str>>()[2].to_string()
|
.split(' ')
|
||||||
}
|
.collect::<Vec<&str>>()[2]
|
||||||
else {
|
.to_string()
|
||||||
"".to_string()
|
} else {
|
||||||
|
String::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,23 +45,22 @@ fn get_git_root () -> String {
|
|||||||
if git_repo_err == "" {
|
if git_repo_err == "" {
|
||||||
let len = git_repo_path.trim_end_matches(&['\r', '\n'][..]).len();
|
let len = git_repo_path.trim_end_matches(&['\r', '\n'][..]).len();
|
||||||
git_repo_path.truncate(len);
|
git_repo_path.truncate(len);
|
||||||
}
|
} else {
|
||||||
else {
|
git_repo_path = String::new();
|
||||||
git_repo_path = "".to_string();
|
|
||||||
}
|
}
|
||||||
git_repo_path
|
git_repo_path
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_git_repo_name (git_repo_root: String) -> String {
|
fn get_git_repo_name(git_repo_root: &str) -> String {
|
||||||
let repo_path_split: Vec<&str> = git_repo_root.split("/").collect();
|
let repo_path_split: Vec<&str> = git_repo_root.split('/').collect();
|
||||||
let last_index = repo_path_split.len() - 1;
|
let last_index = repo_path_split.len() - 1;
|
||||||
let git_repo_name = repo_path_split[last_index];
|
let git_repo_name = repo_path_split[last_index];
|
||||||
|
|
||||||
git_repo_name.to_string()
|
git_repo_name.to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_git_char (git_branch: String) -> ColoredString {
|
fn get_git_char(git_branch: &str) -> ColoredString {
|
||||||
match git_branch.as_str() {
|
match git_branch {
|
||||||
"" => "".clear(),
|
"" => "".clear(),
|
||||||
"main" => " ".truecolor(178, 98, 44),
|
"main" => " ".truecolor(178, 98, 44),
|
||||||
"master" => " ".truecolor(196, 132, 29),
|
"master" => " ".truecolor(196, 132, 29),
|
||||||
@ -75,18 +68,19 @@ fn get_git_char (git_branch: String) -> ColoredString {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn abrev_path (path: String) -> String {
|
fn abrev_path(path: &str) -> String {
|
||||||
let mut short_dir = path.clone();
|
let mut short_dir = path.to_string();
|
||||||
|
|
||||||
let slashes = path.matches("/").count();
|
let slashes = path.matches('/').count();
|
||||||
|
|
||||||
if slashes > 3 {
|
if slashes > 3 {
|
||||||
let parts: Vec<&str> = path.split("/").collect();
|
let parts: Vec<&str> = path.split('/').collect();
|
||||||
let len = parts.len() - 1;
|
let len = parts.len() - 1;
|
||||||
let mut ch1: String;
|
let mut ch1: String;
|
||||||
|
|
||||||
for part in &parts[0..len] {
|
for part in &parts[0..len] {
|
||||||
if part.to_string() != "" { // to avoid the 1st "/"
|
if part.to_string() != "" {
|
||||||
|
// to avoid the 1st "/"
|
||||||
ch1 = part.chars().next().expect(part).to_string(); // 1st char of each part
|
ch1 = part.chars().next().expect(part).to_string(); // 1st char of each part
|
||||||
short_dir = short_dir.replace(part, &ch1);
|
short_dir = short_dir.replace(part, &ch1);
|
||||||
}
|
}
|
||||||
@ -99,19 +93,22 @@ fn main() -> std::io::Result<()> {
|
|||||||
let angle = "❯";
|
let angle = "❯";
|
||||||
|
|
||||||
//Root user indicator
|
//Root user indicator
|
||||||
let user = var_os("USER").expect("UnknownUser").to_str().expect("UnknownUser").to_string();
|
let user = var_os("USER")
|
||||||
|
.expect("UnknownUser")
|
||||||
|
.to_str()
|
||||||
|
.expect("UnknownUser")
|
||||||
|
.to_string();
|
||||||
|
|
||||||
let mut err: String = "".to_string();
|
let mut err: String = String::new();
|
||||||
|
|
||||||
let args: Vec<String> = args().collect();
|
let args: Vec<String> = args().collect();
|
||||||
let shell: String;
|
let shell: String;
|
||||||
if args.len() > 1 {
|
if args.len() > 1 {
|
||||||
shell = args[1].clone(); // Shell symbol
|
shell = args[1].clone(); // Shell symbol
|
||||||
if args.len() > 2 {
|
if args.len() > 2 {
|
||||||
err = args[2].clone(); // Error status
|
err.clone_from(&args[2]); // Error status
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
shell = "none".to_string();
|
shell = "none".to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,33 +123,33 @@ fn main() -> std::io::Result<()> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//SSH shell indicator
|
//SSH shell indicator
|
||||||
let ssh_char:ColoredString;
|
let ssh_char: ColoredString = match var_os("SSH_TTY") {
|
||||||
match var_os("SSH_TTY") {
|
Some(_val) => " ".truecolor(0, 150, 180),
|
||||||
Some(_val) => {
|
None => "".clear(),
|
||||||
ssh_char = " ".truecolor(0,150,180);
|
};
|
||||||
},
|
|
||||||
None => {
|
|
||||||
ssh_char = "".clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Git status
|
//Git status
|
||||||
let git_branch = get_git_branch();
|
let git_branch = get_git_branch();
|
||||||
let git_repo_root = get_git_root();
|
let git_repo_root = get_git_root();
|
||||||
let git_repo_name = get_git_repo_name(git_repo_root.clone()).truecolor(122, 68, 24);
|
let git_repo_name = get_git_repo_name(&git_repo_root.clone()).truecolor(122, 68, 24);
|
||||||
let git_char = get_git_char(git_branch);
|
let git_char = get_git_char(&git_branch);
|
||||||
|
|
||||||
//pwd
|
//pwd
|
||||||
let homedir = var_os("HOME").expect("UnknownDir").to_str().expect("UnknownDir").to_string();
|
let homedir = var_os("HOME")
|
||||||
|
.expect("UnknownDir")
|
||||||
|
.to_str()
|
||||||
|
.expect("UnknownDir")
|
||||||
|
.to_string();
|
||||||
let pwd = current_dir()?;
|
let pwd = current_dir()?;
|
||||||
let mut cur_dir = pwd.display().to_string();
|
let mut cur_dir = pwd.display().to_string();
|
||||||
cur_dir = cur_dir.replace(&git_repo_root, ""); // Remove git repo root
|
cur_dir = cur_dir.replace(&git_repo_root, ""); // Remove git repo root
|
||||||
cur_dir = cur_dir.replace(&homedir, "~"); // Abreviate homedir with "~"
|
cur_dir = cur_dir.replace(&homedir, "~"); // Abreviate homedir with "~"
|
||||||
cur_dir = abrev_path(cur_dir);
|
cur_dir = abrev_path(&cur_dir);
|
||||||
|
|
||||||
print!("{}{}{}{}{}{}{} ",
|
print!(
|
||||||
|
"{}{}{}{}{}{}{} ",
|
||||||
ssh_char,
|
ssh_char,
|
||||||
get_shell_char(shell).truecolor(75,75,75),
|
get_shell_char(&shell).truecolor(75, 75, 75),
|
||||||
git_repo_name,
|
git_repo_name,
|
||||||
git_char,
|
git_char,
|
||||||
cur_dir.italic().truecolor(82, 82, 82),
|
cur_dir.italic().truecolor(82, 82, 82),
|
||||||
|
Loading…
Reference in New Issue
Block a user