use std::env;
use std::fs;
use std::process::Command;
pub fn get_prompt() -> String {
let c_rocky = "\x1b[1;38;2;0;168;107m";
let c_amber = "\x1b[1;38;5;214m";
let c_ciq_blue = "\x1b[1;38;2;42;115;212m";
let c_path = "\x1b[1;38;5;75m";
let c_reset = "\x1b[0m";
let c_bold = "\x1b[1m";
let user = env::var("USER").unwrap_or_else(|_| "user".to_string());
let host = fs::read_to_string("/proc/sys/kernel/hostname")
.unwrap_or_else(|_| "host\n".to_string())
.trim()
.to_string();
let mut cwd = env::current_dir().unwrap_or_default().display().to_string();
if let Ok(home) = env::var("HOME")
&& cwd.starts_with(&home)
{
cwd = cwd.replacen(&home, "~", 1);
}
let mut git_info = String::new();
if let Ok(out) = Command::new("git")
.arg("branch")
.arg("--show-current")
.output()
&& out.status.success()
{
let branch = String::from_utf8_lossy(&out.stdout).trim().to_string();
if !branch.is_empty() {
git_info = format!(" ({}{}{})", c_ciq_blue, branch, c_rocky);
}
}
format!(
"\r\n{}╭─ {} {}{}@{}{}{} : {} {} {}{}\r\n{}╰─λ {}{}",
c_amber,
c_rocky,
user,
c_amber,
c_rocky,
host,
c_amber,
c_path,
cwd,
c_rocky,
git_info,
c_amber,
c_reset,
c_bold
)
}