feat(core/windows): Convert UNC paths to simple paths in JS apis. (#9420)

This commit is contained in:
Fabian-Lars 2024-04-15 11:41:31 +02:00 committed by GitHub
parent 73c1c2d338
commit f1674fce6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 5 deletions

View File

@ -0,0 +1,5 @@
---
tauri: patch:enhance
---
Tauri's built-in commands for the JS api will now return simplified paths on Windows, removing the `\\?\` prefix.

1
Cargo.lock generated
View File

@ -3503,6 +3503,7 @@ dependencies = [
"cocoa", "cocoa",
"data-url", "data-url",
"dirs-next", "dirs-next",
"dunce",
"embed_plist", "embed_plist",
"futures-util", "futures-util",
"getrandom 0.2.12", "getrandom 0.2.12",

View File

@ -73,6 +73,7 @@ http-range = { version = "0.1.5", optional = true }
tracing = { version = "0.1", optional = true } tracing = { version = "0.1", optional = true }
heck = "0.4" heck = "0.4"
log = "0.4" log = "0.4"
dunce = "1"
[target."cfg(any(target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"windows\", target_os = \"macos\"))".dependencies] [target."cfg(any(target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\", target_os = \"windows\", target_os = \"macos\"))".dependencies]
muda = { version = "0.13", default-features = false, features = [ "serde" ] } muda = { version = "0.13", default-features = false, features = [ "serde" ] }

View File

@ -92,7 +92,7 @@ pub fn resolve_directory<R: Runtime>(
directory: BaseDirectory, directory: BaseDirectory,
path: Option<PathBuf>, path: Option<PathBuf>,
) -> Result<PathBuf> { ) -> Result<PathBuf> {
super::resolve_path(&resolver, directory, path) super::resolve_path(&resolver, directory, path).map(|p| dunce::simplified(&p).to_path_buf())
} }
#[command(root = "crate")] #[command(root = "crate")]
@ -107,12 +107,12 @@ pub fn resolve(paths: Vec<String>) -> Result<PathBuf> {
for p in paths { for p in paths {
path.push(p); path.push(p);
} }
Ok(normalize_path(&path)) Ok(dunce::simplified(&normalize_path(&path)).to_path_buf())
} }
#[command(root = "crate")] #[command(root = "crate")]
pub fn normalize(path: String) -> String { pub fn normalize(path: String) -> String {
let mut p = normalize_path_no_absolute(Path::new(&path)) let mut p = dunce::simplified(&normalize_path_no_absolute(Path::new(&path)))
.to_string_lossy() .to_string_lossy()
.to_string(); .to_string();
@ -149,9 +149,10 @@ pub fn join(mut paths: Vec<String>) -> String {
.collect::<String>(), .collect::<String>(),
); );
let p = normalize_path_no_absolute(&path) let p = dunce::simplified(&normalize_path_no_absolute(&path))
.to_string_lossy() .to_string_lossy()
.to_string(); .to_string();
if p.is_empty() { if p.is_empty() {
".".into() ".".into()
} else { } else {
@ -162,7 +163,7 @@ pub fn join(mut paths: Vec<String>) -> String {
#[command(root = "crate")] #[command(root = "crate")]
pub fn dirname(path: String) -> Result<PathBuf> { pub fn dirname(path: String) -> Result<PathBuf> {
match Path::new(&path).parent() { match Path::new(&path).parent() {
Some(p) => Ok(p.to_path_buf()), Some(p) => Ok(dunce::simplified(p).to_path_buf()),
None => Err(Error::NoParent), None => Err(Error::NoParent),
} }
} }