From 6f84da2f1b3eec09ef7425b19b304061107ddc78 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Mon, 24 Jun 2024 22:32:36 +1000 Subject: [PATCH] Fixes parsing of cmd in history file on unix --- crates/pet-conda/src/environments.rs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/crates/pet-conda/src/environments.rs b/crates/pet-conda/src/environments.rs index 93ac50b7..c2ad89db 100644 --- a/crates/pet-conda/src/environments.rs +++ b/crates/pet-conda/src/environments.rs @@ -193,6 +193,8 @@ fn get_conda_dir_from_cmd(cmd_line: String) -> Option { } // Sometimes we can have paths like // # cmd: C:\Users\donja\miniconda3\lib\site-packages\conda\__main__.py create --yes --prefix .conda python=3.9 + // # cmd: /Users/donjayamanne/.pyenv/versions/mambaforge-22.11.1-3/lib/python3.10/site-packages/conda/__main__.py create --yes --prefix .conda python=3.12 + let mut cmd_line = cmd_line.to_path_buf(); if cmd_line .to_str() @@ -201,10 +203,8 @@ fn get_conda_dir_from_cmd(cmd_line: String) -> Option { && cmd_line.to_str().unwrap_or_default().contains("lib") { loop { - if cmd_line - .to_str() - .unwrap_or_default() - .contains("site-packages") + if cmd_line.to_str().unwrap_or_default().contains("lib") + && !cmd_line.to_str().unwrap_or_default().ends_with("lib") { let _ = cmd_line.pop(); } else { @@ -253,7 +253,6 @@ pub fn get_activation_command( #[cfg(test)] mod tests { - #[cfg(windows)] use super::*; #[test] @@ -276,4 +275,16 @@ mod tests { assert!(conda_dir.is_none()); } + + #[test] + #[cfg(unix)] + fn parse_cmd_line() { + let line = "# cmd: /Users/donjayamanne/.pyenv/versions/mambaforge-22.11.1-3/lib/python3.10/site-packages/conda/__main__.py create --yes --prefix .conda python=3.12"; + let conda_dir = get_conda_dir_from_cmd(line.to_string()).unwrap(); + + assert_eq!( + conda_dir, + PathBuf::from("/Users/donjayamanne/.pyenv/versions/mambaforge-22.11.1-3") + ); + } }