format [no ci]

This commit is contained in:
sxyazi 2023-10-09 19:45:36 +08:00
parent 4fb835ee64
commit bc9fb8e302
No known key found for this signature in database

View file

@ -7,14 +7,16 @@ use crate::Url;
pub fn expand_path(p: impl AsRef<Path>) -> PathBuf { pub fn expand_path(p: impl AsRef<Path>) -> PathBuf {
let mut p = p.as_ref(); let mut p = p.as_ref();
// expand the environment variable by calling the "echo" command, in linux case, this also expands the '~' path // expand the environment variable by calling the "echo" command, in linux case,
// this also expands the '~' path
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
let expanded_path = match std::process::Command::new("cmd").args(&["/C", "echo"]).arg(p).output() { let expanded_path = match std::process::Command::new("cmd").args(&["/C", "echo"]).arg(p).output() {
Ok(output) if output.status.success() => Some(String::from_utf8_lossy(&output.stdout) Ok(output) if output.status.success() => Some(
String::from_utf8_lossy(&output.stdout)
.trim_end() .trim_end()
.trim_matches('"') .trim_matches('"')
.replace("\\\"", "\"") .replace("\\\"", "\"")
.to_string() .to_string(),
), ),
_ => None, _ => None,
}; };
@ -22,8 +24,11 @@ pub fn expand_path(p: impl AsRef<Path>) -> PathBuf {
let expanded_path = match std::process::Command::new("sh") let expanded_path = match std::process::Command::new("sh")
.arg("-c") .arg("-c")
.arg(format!("echo \"{}\"", p.to_string_lossy().replace("\"", "\\\""))) .arg(format!("echo \"{}\"", p.to_string_lossy().replace("\"", "\\\"")))
.output() { .output()
Ok(output) if output.status.success() => Some(String::from_utf8_lossy(&output.stdout).trim_end().to_string()), {
Ok(output) if output.status.success() => {
Some(String::from_utf8_lossy(&output.stdout).trim_end().to_string())
}
_ => None, _ => None,
}; };
@ -168,11 +173,10 @@ pub fn optional_bool(s: &str) -> Option<bool> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::{borrow::Cow, path::Path, env}; use std::{borrow::Cow, env, path::Path};
use crate::expand_path;
use super::path_relative_to; use super::path_relative_to;
use crate::expand_path;
#[cfg(unix)] #[cfg(unix)]
#[test] #[test]