mirror of
https://github.com/starship/starship.git
synced 2026-06-23 02:05:51 +07:00
feat: Add option to control git directory truncation (#165)
This commit is contained in:
@@ -24,22 +24,26 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
|
||||
let truncation_length = module
|
||||
.config_value_i64("truncation_length")
|
||||
.unwrap_or(DIR_TRUNCATION_LENGTH);
|
||||
let truncate_to_repo = module.config_value_bool("truncate_to_repo").unwrap_or(true);
|
||||
|
||||
let current_dir = &context.current_dir;
|
||||
log::debug!("Current directory: {:?}", current_dir);
|
||||
|
||||
let dir_string;
|
||||
if let Some(repo_root) = &context.repo_root {
|
||||
// Contract the path to the git repo root
|
||||
let repo_folder_name = repo_root.file_name().unwrap().to_str().unwrap();
|
||||
match &context.repo_root {
|
||||
Some(repo_root) if truncate_to_repo => {
|
||||
// Contract the path to the git repo root
|
||||
let repo_folder_name = repo_root.file_name().unwrap().to_str().unwrap();
|
||||
|
||||
dir_string = contract_path(current_dir, repo_root, repo_folder_name);
|
||||
} else {
|
||||
// Contract the path to the home directory
|
||||
let home_dir = dirs::home_dir().unwrap();
|
||||
dir_string = contract_path(current_dir, repo_root, repo_folder_name);
|
||||
}
|
||||
_ => {
|
||||
// Contract the path to the home directory
|
||||
let home_dir = dirs::home_dir().unwrap();
|
||||
|
||||
dir_string = contract_path(current_dir, &home_dir, HOME_SYMBOL);
|
||||
}
|
||||
dir_string = contract_path(current_dir, &home_dir, HOME_SYMBOL);
|
||||
}
|
||||
};
|
||||
|
||||
// Truncate the dir string to the maximum number of path components
|
||||
let truncated_dir_string = truncate(dir_string, truncation_length as usize);
|
||||
|
||||
Reference in New Issue
Block a user