diff --git a/Cargo.lock b/Cargo.lock index 845860f6..70861865 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -656,6 +656,7 @@ dependencies = [ "color-eyre", "colored", "derive_more", + "dunce", "env_logger", "inquire", "interactive-clap", @@ -1312,6 +1313,12 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + [[package]] name = "dyn-clone" version = "1.0.14" diff --git a/cargo-near/Cargo.toml b/cargo-near/Cargo.toml index 74774bfa..c8c46e08 100644 --- a/cargo-near/Cargo.toml +++ b/cargo-near/Cargo.toml @@ -9,7 +9,12 @@ readme = "README.md" repository = "https://github.com/near/cargo-near" license = "MIT OR Apache-2.0" keywords = ["cargo", "near", "contract", "abi", "build"] -categories = ["development-tools", "development-tools::cargo-plugins", "development-tools::build-utils", "command-line-utilities"] +categories = [ + "development-tools", + "development-tools::cargo-plugins", + "development-tools::build-utils", + "command-line-utilities", +] [package.metadata.wix] upgrade-guid = "FFBAE83D-C3FA-45DD-9F19-C8F312E905C5" @@ -42,3 +47,4 @@ interactive-clap-derive = "0.2.5" near-cli-rs = { version = "0.5.2" } derive_more = "0.99.9" shell-words = "1.0.0" +dunce = "1.0.4" diff --git a/cargo-near/src/util/mod.rs b/cargo-near/src/util/mod.rs index 8ae2f91c..34285717 100644 --- a/cargo-near/src/util/mod.rs +++ b/cargo-near/src/util/mod.rs @@ -58,14 +58,6 @@ where let path = path.as_ref(); log::debug!("Setting cargo working dir to '{}'", path); cmd.current_dir(path); - #[cfg(target_os = "windows")] - { - let mut path = path.as_std_path().to_string_lossy().to_string(); - // remove first 4 elements from path string - path.drain(..4); - let path = std::path::PathBuf::from(path); - cmd.current_dir(path); - } } cmd.arg(command); @@ -249,8 +241,11 @@ pub(crate) fn compile_project( /// Create the directory if it doesn't exist, and return the absolute path to it. pub(crate) fn force_canonicalize_dir(dir: &Utf8Path) -> color_eyre::eyre::Result { fs::create_dir_all(dir).wrap_err_with(|| format!("failed to create directory `{}`", dir))?; - dir.canonicalize_utf8() - .wrap_err_with(|| format!("failed to access output directory `{}`", dir)) + let compatible_path = dunce::canonicalize(&dir); + match compatible_path { + Ok(path) => Ok(Utf8PathBuf::from_path_buf(path).unwrap()), + Err(err) => Err(err).wrap_err_with(|| format!("failed to canonicalize path `{}`", dir)), + } } /// Copy a file to a destination.