feat/shell-show-item-in-dir
amrbashir 7 months ago
parent 1ec8844b0e
commit 539d41ace7
No known key found for this signature in database
GPG Key ID: BBD7A47A2003FF33

119
Cargo.lock generated

@ -766,9 +766,9 @@ dependencies = [
[[package]] [[package]]
name = "borsh" name = "borsh"
version = "1.3.1" version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" checksum = "26d4d6dafc1a3bb54687538972158f07b2c948bc57d5890df22c0739098b3028"
dependencies = [ dependencies = [
"borsh-derive", "borsh-derive",
"cfg_aliases 0.1.1", "cfg_aliases 0.1.1",
@ -776,12 +776,12 @@ dependencies = [
[[package]] [[package]]
name = "borsh-derive" name = "borsh-derive"
version = "1.3.1" version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" checksum = "bf4918709cc4dd777ad2b6303ed03cb37f3ca0ccede8c1b0d28ac6db8f4710e0"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"proc-macro-crate 3.1.0", "proc-macro-crate 2.0.2",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.79", "syn 2.0.79",
@ -956,7 +956,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719"
dependencies = [ dependencies = [
"serde", "serde",
"toml 0.8.10", "toml 0.8.2",
] ]
[[package]] [[package]]
@ -1908,7 +1908,7 @@ dependencies = [
"cc", "cc",
"memchr", "memchr",
"rustc_version", "rustc_version",
"toml 0.8.10", "toml 0.8.2",
"vswhom", "vswhom",
"winreg 0.52.0", "winreg 0.52.0",
] ]
@ -2593,7 +2593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
dependencies = [ dependencies = [
"heck 0.4.1", "heck 0.4.1",
"proc-macro-crate 2.0.0", "proc-macro-crate 2.0.2",
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -3881,13 +3881,12 @@ dependencies = [
[[package]] [[package]]
name = "nix" name = "nix"
version = "0.28.0" version = "0.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"cfg-if", "cfg-if",
"cfg_aliases 0.1.1",
"libc", "libc",
"memoffset 0.9.1", "memoffset 0.9.1",
] ]
@ -4061,7 +4060,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [ dependencies = [
"proc-macro-crate 3.1.0", "proc-macro-crate 2.0.2",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.79", "syn 2.0.79",
@ -4829,20 +4828,12 @@ dependencies = [
[[package]] [[package]]
name = "proc-macro-crate" name = "proc-macro-crate"
version = "2.0.0" version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
dependencies = [
"toml_edit 0.20.7",
]
[[package]]
name = "proc-macro-crate"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
dependencies = [ dependencies = [
"toml_edit 0.21.1", "toml_datetime",
"toml_edit 0.20.2",
] ]
[[package]] [[package]]
@ -6536,7 +6527,7 @@ dependencies = [
"cfg-expr", "cfg-expr",
"heck 0.5.0", "heck 0.5.0",
"pkg-config", "pkg-config",
"toml 0.8.10", "toml 0.8.2",
"version-compare", "version-compare",
] ]
@ -6687,7 +6678,7 @@ dependencies = [
"tauri-codegen", "tauri-codegen",
"tauri-utils", "tauri-utils",
"tauri-winres", "tauri-winres",
"toml 0.8.10", "toml 0.8.2",
"walkdir", "walkdir",
] ]
@ -6745,7 +6736,7 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"tauri-utils", "tauri-utils",
"toml 0.8.10", "toml 0.8.2",
"walkdir", "walkdir",
] ]
@ -7051,6 +7042,7 @@ dependencies = [
name = "tauri-plugin-shell" name = "tauri-plugin-shell"
version = "2.0.2" version = "2.0.2"
dependencies = [ dependencies = [
"dunce",
"encoding_rs", "encoding_rs",
"log", "log",
"open", "open",
@ -7287,7 +7279,7 @@ dependencies = [
"serialize-to-javascript", "serialize-to-javascript",
"swift-rs", "swift-rs",
"thiserror", "thiserror",
"toml 0.8.10", "toml 0.8.2",
"url", "url",
"urlpattern", "urlpattern",
"uuid", "uuid",
@ -7574,21 +7566,21 @@ dependencies = [
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.8.10" version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
dependencies = [ dependencies = [
"serde", "serde",
"serde_spanned", "serde_spanned",
"toml_datetime", "toml_datetime",
"toml_edit 0.22.6", "toml_edit 0.20.2",
] ]
[[package]] [[package]]
name = "toml_datetime" name = "toml_datetime"
version = "0.6.5" version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
dependencies = [ dependencies = [
"serde", "serde",
] ]
@ -7603,42 +7595,20 @@ dependencies = [
"serde", "serde",
"serde_spanned", "serde_spanned",
"toml_datetime", "toml_datetime",
"winnow 0.5.40", "winnow",
]
[[package]]
name = "toml_edit"
version = "0.20.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
dependencies = [
"indexmap 2.6.0",
"toml_datetime",
"winnow 0.5.40",
]
[[package]]
name = "toml_edit"
version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
dependencies = [
"indexmap 2.6.0",
"toml_datetime",
"winnow 0.5.40",
] ]
[[package]] [[package]]
name = "toml_edit" name = "toml_edit"
version = "0.22.6" version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
dependencies = [ dependencies = [
"indexmap 2.6.0", "indexmap 2.6.0",
"serde", "serde",
"serde_spanned", "serde_spanned",
"toml_datetime", "toml_datetime",
"winnow 0.6.2", "winnow",
] ]
[[package]] [[package]]
@ -8815,15 +8785,6 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "winnow"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "winreg" name = "winreg"
version = "0.10.1" version = "0.10.1"
@ -8965,9 +8926,9 @@ dependencies = [
[[package]] [[package]]
name = "zbus" name = "zbus"
version = "4.1.2" version = "4.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030"
dependencies = [ dependencies = [
"async-broadcast", "async-broadcast",
"async-executor", "async-executor",
@ -8986,7 +8947,7 @@ dependencies = [
"futures-sink", "futures-sink",
"futures-util", "futures-util",
"hex", "hex",
"nix 0.28.0", "nix 0.27.1",
"ordered-stream", "ordered-stream",
"rand 0.8.5", "rand 0.8.5",
"serde", "serde",
@ -9005,11 +8966,11 @@ dependencies = [
[[package]] [[package]]
name = "zbus_macros" name = "zbus_macros"
version = "4.1.2" version = "4.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7"
dependencies = [ dependencies = [
"proc-macro-crate 3.1.0", "proc-macro-crate 1.3.1",
"proc-macro2", "proc-macro2",
"quote", "quote",
"regex", "regex",
@ -9127,9 +9088,9 @@ dependencies = [
[[package]] [[package]]
name = "zvariant" name = "zvariant"
version = "4.0.2" version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65"
dependencies = [ dependencies = [
"endi", "endi",
"enumflags2", "enumflags2",
@ -9141,11 +9102,11 @@ dependencies = [
[[package]] [[package]]
name = "zvariant_derive" name = "zvariant_derive"
version = "4.0.2" version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e"
dependencies = [ dependencies = [
"proc-macro-crate 3.1.0", "proc-macro-crate 1.3.1",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 1.0.109", "syn 1.0.109",

@ -37,6 +37,7 @@ regex = "1"
open = { version = "5", features = ["shellexecute-on-windows"] } open = { version = "5", features = ["shellexecute-on-windows"] }
encoding_rs = "0.8" encoding_rs = "0.8"
os_pipe = "1" os_pipe = "1"
dunce = { workspace = true }
[target."cfg(windows)".dependencies.windows] [target."cfg(windows)".dependencies.windows]
version = "0.54" version = "0.54"

@ -139,10 +139,11 @@ pub fn open<P: AsRef<str>>(scope: &OpenScope, path: P, with: Option<Program>) ->
pub fn show_item_in_directory<P: AsRef<std::path::Path>>(p: P) -> crate::Result<()> { pub fn show_item_in_directory<P: AsRef<std::path::Path>>(p: P) -> crate::Result<()> {
let p = p.as_ref().canonicalize()?; let p = p.as_ref().canonicalize()?;
let p = dunce::simplified(&p);
#[cfg(any( #[cfg(any(
windows, windows,
target_os = "maco", target_os = "macos",
target_os = "linux", target_os = "linux",
target_os = "dragonfly", target_os = "dragonfly",
target_os = "freebsd", target_os = "freebsd",
@ -153,7 +154,7 @@ pub fn show_item_in_directory<P: AsRef<std::path::Path>>(p: P) -> crate::Result<
#[cfg(not(any( #[cfg(not(any(
windows, windows,
target_os = "maco", target_os = "macos",
target_os = "linux", target_os = "linux",
target_os = "dragonfly", target_os = "dragonfly",
target_os = "freebsd", target_os = "freebsd",

@ -1,4 +1,4 @@
use std::{ffi::OsString, path::PathBuf}; use std::path::Path;
use windows::{ use windows::{
core::{w, HSTRING, PCWSTR}, core::{w, HSTRING, PCWSTR},
@ -12,18 +12,16 @@ use windows::{
}, },
}; };
pub fn show_item_in_directory(file: PathBuf) -> crate::Result<()> { pub fn show_item_in_directory(file: &Path) -> crate::Result<()> {
let _ = unsafe { CoInitialize(None) }; let _ = unsafe { CoInitialize(None) };
let dir = file let dir = file
.parent() .parent()
.ok_or_else(|| crate::Error::NoParent(file.clone()))?; .ok_or_else(|| crate::Error::NoParent(file.to_path_buf()))?;
let dir = OsString::from(dir);
let dir = HSTRING::from(dir); let dir = HSTRING::from(dir);
let dir_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(dir.as_ptr())) }; let dir_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(dir.as_ptr())) };
let file = OsString::from(file);
let file = HSTRING::from(file); let file = HSTRING::from(file);
let file_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(file.as_ptr())) }; let file_item = unsafe { ILCreateFromPathW(PCWSTR::from_raw(file.as_ptr())) };

Loading…
Cancel
Save