From 7297a78fbab215bcc333641bc616b47f4e3d75d8 Mon Sep 17 00:00:00 2001 From: candifloss Date: Thu, 16 Jul 2026 13:07:27 +0530 Subject: [PATCH] Use Updated Library --- Cargo.lock | 47 ++++++++++++++++++----------------------- Cargo.toml | 3 ++- src/indicators/error.rs | 10 ++++----- src/indicators/git.rs | 14 ++++++------ src/indicators/pwd.rs | 10 ++++----- src/indicators/ssh.rs | 10 ++++----- src/indicators/user.rs | 10 ++++----- src/prettyprompt.rs | 10 ++++----- 8 files changed, 54 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b6fa8b8..92e176d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,47 +2,40 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "libc" version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys", +] + [[package]] name = "prettyprompt" version = "0.3.0" dependencies = [ - "ansi_term", "libc", + "nu-ansi-term", ] [[package]] -name = "winapi" -version = "0.3.9" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows-link", ] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index 7c0c206..4955e00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,8 +4,9 @@ version = "0.3.0" edition = "2024" [dependencies] -ansi_term = "0.12" +#ansi_term = "0.12" libc = "0.2.180" +nu-ansi-term = "0.50.3" [[bin]] name = "prettyprompt" diff --git a/src/indicators/error.rs b/src/indicators/error.rs index 5ce1992..833d0a4 100644 --- a/src/indicators/error.rs +++ b/src/indicators/error.rs @@ -1,12 +1,12 @@ -use ansi_term::ANSIGenericString; -use ansi_term::Colour::RGB; +use nu_ansi_term::AnsiGenericString; +use nu_ansi_term::Color::Rgb; pub const ERR_SYMBOL: &str = "\u{276F}"; // Error indicator symbol: "❯" -pub const ERR_COL: ansi_term::Colour = RGB(255, 53, 94); // Error -pub const NORMIE_COL: ansi_term::Colour = RGB(0, 255, 180); // Success +pub const ERR_COL: nu_ansi_term::Color = Rgb(255, 53, 94); // Error +pub const NORMIE_COL: nu_ansi_term::Color = Rgb(0, 255, 180); // Success // Error indicator -pub fn indicator(args: &[String]) -> ANSIGenericString<'static, str> { +pub fn indicator(args: &[String]) -> AnsiGenericString<'static, str> { let exit_code = args.get(1).map_or("0", String::as_str); // Default to "0" (success, no error) if arg missing if exit_code == "0" { NORMIE_COL.paint(ERR_SYMBOL) // Success diff --git a/src/indicators/git.rs b/src/indicators/git.rs index 9a60a42..d5f6921 100644 --- a/src/indicators/git.rs +++ b/src/indicators/git.rs @@ -1,13 +1,13 @@ -use ansi_term::ANSIGenericString; -use ansi_term::Colour::RGB; +use nu_ansi_term::AnsiGenericString; +use nu_ansi_term::Color::Rgb; use std::path::Path; use std::process::Command; pub const GIT_SYMBOL: &str = "\u{276F}"; // Git indicator symbol: "❯" -pub const MAIN_COL: ansi_term::Colour = RGB(178, 98, 44); -pub const DEV_COL: ansi_term::Colour = RGB(54, 159, 150); -pub const DEFAULT_BRANCH_COL: ansi_term::Colour = RGB(255, 255, 255); -pub const NORMIE_COL: ansi_term::Colour = RGB(82, 82, 82); +pub const MAIN_COL: nu_ansi_term::Color = Rgb(178, 98, 44); +pub const DEV_COL: nu_ansi_term::Color = Rgb(54, 159, 150); +pub const DEFAULT_BRANCH_COL: nu_ansi_term::Color = Rgb(255, 255, 255); +pub const NORMIE_COL: nu_ansi_term::Color = Rgb(82, 82, 82); /// Returns the repo's root and branch, if present pub fn info() -> Option<(String, String)> { @@ -36,7 +36,7 @@ pub fn repo_name(path: &str) -> String { } /// Git branch indicator -pub fn indicator(branch: Option) -> ANSIGenericString<'static, str> { +pub fn indicator(branch: Option) -> AnsiGenericString<'static, str> { match branch { Some(b) => match b.as_str() { "main" => MAIN_COL.paint(GIT_SYMBOL), diff --git a/src/indicators/pwd.rs b/src/indicators/pwd.rs index b41a594..6a667bf 100644 --- a/src/indicators/pwd.rs +++ b/src/indicators/pwd.rs @@ -1,11 +1,11 @@ use crate::indicators::git::{MAIN_COL, repo_name}; -use ansi_term::ANSIGenericString; -use ansi_term::Colour::RGB; +use nu_ansi_term::AnsiGenericString; +use nu_ansi_term::Color::Rgb; use std::env::current_dir; pub const UNKNOWN_PATH: &str = "\u{2248}"; // "≈" -pub const PATH_COL: ansi_term::Colour = RGB(82, 82, 82); -pub const REPO_COL: ansi_term::Colour = RGB(55, 120, 130); +pub const PATH_COL: nu_ansi_term::Color = Rgb(82, 82, 82); +pub const REPO_COL: nu_ansi_term::Color = Rgb(55, 120, 130); /// Find the current user's home directory. fn home_dir() -> Option { @@ -73,7 +73,7 @@ pub fn pwd( shorten_path: bool, replace_repo: bool, git_repo: Option, -) -> ANSIGenericString<'static, str> { +) -> AnsiGenericString<'static, str> { let mut slash_limit: u8 = 3; // Max number of slashes let mut path = full_path(); // Get the full path of he current directory diff --git a/src/indicators/ssh.rs b/src/indicators/ssh.rs index f12054f..ae3455c 100644 --- a/src/indicators/ssh.rs +++ b/src/indicators/ssh.rs @@ -1,10 +1,10 @@ -use ansi_term::ANSIGenericString; -use ansi_term::Colour::RGB; +use nu_ansi_term::AnsiGenericString; +use nu_ansi_term::Color::Rgb; use std::env::var_os; // For environment variables pub const SSH_SYMBOL: &str = "\u{276F}"; // SSH indicator symbol: "❯" -pub const SSH_COL: ansi_term::Colour = RGB(255, 149, 0); // In SSH session -pub const NORMIE_COL: ansi_term::Colour = RGB(82, 82, 82); // Non-SSH session +pub const SSH_COL: nu_ansi_term::Color = Rgb(255, 149, 0); // In SSH session +pub const NORMIE_COL: nu_ansi_term::Color = Rgb(82, 82, 82); // Non-SSH session const SSH_ENV_VARS: [&str; 3] = ["SSH_TTY", "SSH_CONNECTION", "SSH_CLIENT"]; // Environment variables normally present in SSH sessions /// Checks if current session is an SSH session @@ -15,7 +15,7 @@ fn is_ssh_session() -> bool { } /// SSH shell indicator -pub fn indicator() -> ANSIGenericString<'static, str> { +pub fn indicator() -> AnsiGenericString<'static, str> { let is_ssh: bool = is_ssh_session(); if is_ssh { SSH_COL.paint(SSH_SYMBOL) diff --git a/src/indicators/user.rs b/src/indicators/user.rs index 50eee6d..b30ef69 100644 --- a/src/indicators/user.rs +++ b/src/indicators/user.rs @@ -1,11 +1,11 @@ -use ansi_term::ANSIGenericString; -use ansi_term::Colour::RGB; +use nu_ansi_term::AnsiGenericString; +use nu_ansi_term::Color::Rgb; use libc::geteuid; pub const USER_SYMBOL: &str = "\u{276F}"; // User indicator symbol: "❯" -pub const ROOT_COL: ansi_term::Colour = RGB(255, 53, 94); // If the user is root -pub const NORMIE_COL: ansi_term::Colour = RGB(0, 255, 180); // Regular user +pub const ROOT_COL: nu_ansi_term::Color = Rgb(255, 53, 94); // If the user is root +pub const NORMIE_COL: nu_ansi_term::Color = Rgb(0, 255, 180); // Regular user // Check if the current user is root pub fn is_root() -> bool { @@ -13,7 +13,7 @@ pub fn is_root() -> bool { } /// Root user indicator -pub fn indicator() -> ANSIGenericString<'static, str> { +pub fn indicator() -> AnsiGenericString<'static, str> { if is_root() { ROOT_COL.paint(USER_SYMBOL) } else { diff --git a/src/prettyprompt.rs b/src/prettyprompt.rs index ebe7e86..eef5703 100644 --- a/src/prettyprompt.rs +++ b/src/prettyprompt.rs @@ -6,13 +6,13 @@ mod indicators { } use crate::indicators::{error, git, ssh, user}; -use ansi_term::{ANSIGenericString, ANSIGenericStrings}; +use nu_ansi_term::{AnsiGenericString, AnsiGenericStrings}; // Add a component to the prompt if the condition is true. fn add_component( - components: &mut Vec>, // Vector to hold components of the prompt. + components: &mut Vec>, // Vector to hold components of the prompt. condition: bool, // Condition to add the component - component_fn: impl FnOnce() -> ANSIGenericString<'static, str>, // Function to create the component(takes no arguments, returns `ANSIGenericString`) is passed here. + component_fn: impl FnOnce() -> AnsiGenericString<'static, str>, // Function to create the component(takes no arguments, returns `AnsiGenericString`) is passed here. ) { if condition { components.push(component_fn()); // Push the generated component to the vector. @@ -23,7 +23,7 @@ fn main() { let cmd_args: Vec = std::env::args().collect(); // Command-line args // Vector to hold the different parts of the prompt. - let mut components: Vec> = Vec::new(); // The components will be concatenated into a single string in the end. + let mut components: Vec> = Vec::new(); // The components will be concatenated into a single string in the end. // Hard-coded configuration. This will be replaced by a configuration file in a future version let indicate_user: bool = true; @@ -49,7 +49,7 @@ fn main() { }); // Finally, combine the parts into a single prompts string - let prompt: ANSIGenericStrings<'_, str> = ANSIGenericStrings(&components[..]); + let prompt: AnsiGenericStrings<'_, str> = AnsiGenericStrings(&components[..]); // `print!()` prevents an extra newline, unlike `println!()` print!("{prompt} "); // A trailing space for aesthetic formatting. }