add actual path separator value to config

This commit is contained in:
Jonathan Goren 2022-03-16 18:13:05 +02:00
parent 38b84d08d7
commit 47e30d3d4a
3 changed files with 8 additions and 8 deletions

View file

@ -111,6 +111,9 @@ pub struct Config {
/// The separator used to print file paths.
pub path_separator: Option<String>,
/// The actual separator, either the system default separator or `path_separator`
pub actual_path_separator: String,
/// The maximum number of search results
pub max_results: Option<usize>,

View file

@ -222,6 +222,9 @@ fn construct_config(matches: clap::ArgMatches, pattern_regex: &str) -> Result<Co
let path_separator = matches
.value_of("path-separator")
.map_or_else(filesystem::default_path_separator, |s| Some(s.to_owned()));
let actual_path_separator = path_separator
.clone()
.unwrap_or_else(|| std::path::MAIN_SEPARATOR.to_string());
check_path_separator_length(path_separator.as_deref())?;
let size_limits = extract_size_limits(&matches)?;
@ -368,6 +371,7 @@ fn construct_config(matches: clap::ArgMatches, pattern_regex: &str) -> Result<Co
owner_constraint,
show_filesystem_errors: matches.is_present("show-errors"),
path_separator,
actual_path_separator,
max_results: matches
.value_of("max-results")
.map(|n| n.parse::<usize>())

View file

@ -3,7 +3,6 @@ use std::io::{self, Write};
use std::path::Path;
use lscolors::{Indicator, LsColors, Style};
use once_cell::sync::Lazy;
use crate::config::Config;
use crate::dir_entry::DirEntry;
@ -11,8 +10,6 @@ use crate::error::print_error;
use crate::exit_codes::ExitCode;
use crate::filesystem::strip_current_dir;
static MAIN_SEPARATOR_STR: Lazy<String> = Lazy::new(|| std::path::MAIN_SEPARATOR.to_string());
fn replace_path_separator(path: &str, new_path_separator: &str) -> String {
path.replace(std::path::MAIN_SEPARATOR, new_path_separator)
}
@ -56,17 +53,13 @@ fn print_trailing_slash<W: Write>(
style: Option<&Style>,
) -> io::Result<()> {
if entry.file_type().map_or(false, |ft| ft.is_dir()) {
let separator = config
.path_separator
.as_ref()
.unwrap_or(&MAIN_SEPARATOR_STR);
write!(
stdout,
"{}",
style
.map(Style::to_ansi_term_style)
.unwrap_or_default()
.paint(separator)
.paint(&config.actual_path_separator)
)?;
}
Ok(())