Compare commits

..

2 Commits
dev ... main

Author SHA1 Message Date
58ecbd6a75 Seperated prompt and prompt-pwd into 2 binaries 2025-01-19 15:57:08 +05:30
d4d783580d Merge pull request 'dev' (#1) from dev into main
Reviewed-on: #1
2024-12-02 04:26:42 +00:00
6 changed files with 46 additions and 28 deletions

2
Cargo.lock generated
View File

@ -13,7 +13,7 @@ dependencies = [
[[package]]
name = "prettyprompt"
version = "0.2.0"
version = "0.3.0"
dependencies = [
"ansi_term",
]

View File

@ -1,7 +1,15 @@
[package]
name = "prettyprompt"
version = "0.2.0"
version = "0.3.0"
edition = "2021"
[dependencies]
ansi_term = "0.12"
[[bin]]
name = "prettyprompt"
path = "src/prettyprompt.rs"
[[bin]]
name = "prettyprompt-pwd"
path = "src/prettyprompt_pwd.rs"

View File

@ -35,7 +35,7 @@ A pretty shell prompt, written in rust.
## Current Limitations
- **Hard-Coded Configuration**: User customization is not available yet.
- **Exit Code Requirement**: Must pass the last command's exit code as a command-line argument.
- **Exit Code Requirement**: Must pass the last commands exit code as a command-line argument.
## Tested on
@ -59,7 +59,7 @@ cargo build --release
**Step 2. Add to `$PATH`**
- Option 1. Move the binary to a directory in your `$PATH`. Eg:
```bash
sudo mv target/release/prettyprompt /usr/bin/
sudo mv target/release/prettyprompt target/release/prettyprompt-pwd /usr/bin/
```
- Option 2. Add the directory containing the binary to `$PATH`
System-wide: `/etc/profile`
@ -96,13 +96,11 @@ end
```
### `zsh`
Use the precmd function to set the `PROMPT` variable with the output of `prettyprompt $?` as its value.
Export the `PS1` variable with the output of `prettyprompt $?` as its value.
User-specific: `~/.zshrc`
System-wide: `/etc/zsh/zshrc`
```zsh
precmd() {
PROMPT="$(prettyprompt $?)" # Notice the double quotes
}
```sh
export PS1='$(prettyprompt $?)' # Notice the single quotes
```
### Other shells

View File

@ -1,12 +1,11 @@
mod indicators {
pub mod error;
pub mod git;
pub mod pwd;
pub mod ssh;
pub mod user;
}
use crate::indicators::{error, git, pwd, ssh, user};
use crate::indicators::{error, git, ssh, user};
use ansi_term::{ANSIGenericString, ANSIGenericStrings};
// Add a component to the prompt if the condition is true.
@ -31,13 +30,9 @@ fn main() {
let indicate_ssh: bool = true;
let indicate_err: bool = true;
let indicate_git_branch: bool = true;
let show_pwd: bool = true;
let abbrev_home: bool = true;
let shorten_path: bool = true;
let replace_repo: bool = true;
// Conditionally fetch Git-related info if required, or set to None
let git_info: Option<(String, String)> = if indicate_git_branch || replace_repo {
let git_info: Option<(String, String)> = if indicate_git_branch {
git::info()
} else {
None
@ -53,15 +48,6 @@ fn main() {
error::indicator(&cmd_args)
});
// Insert `pwd` at the beginning of the prompt
if show_pwd {
let repo_path = git_info.map(|info| info.0);
components.insert(
0,
pwd::pwd(abbrev_home, shorten_path, replace_repo, repo_path),
);
}
// Finally, combine the parts into a single prompts string
let prompt: ANSIGenericStrings<'_, str> = ANSIGenericStrings(&components[..]);
// `print!()` prevents an extra newline, unlike `println!()`

26
src/prettyprompt_pwd.rs Normal file
View File

@ -0,0 +1,26 @@
mod indicators {
pub mod git;
pub mod pwd;
}
use crate::indicators::{git, pwd};
fn main() {
// Hard-coded configuration. This will be replaced by a configuration file in a future version
let indicate_git_branch: bool = true;
let abbrev_home: bool = true;
let shorten_path: bool = true;
let replace_repo: bool = true;
// Conditionally fetch Git-related info if required, or set to None
let git_info: Option<(String, String)> = if indicate_git_branch || replace_repo {
git::info()
} else {
None
};
let repo_path = git_info.map(|info| info.0);
let promt_pwd = pwd::pwd(abbrev_home, shorten_path, replace_repo, repo_path);
print!("{promt_pwd}"); // A trailing space for aesthetic formatting.
}