11// Copyright (c) Microsoft Corporation. All rights reserved.
22// Licensed under the MIT License.
33
4+ use std:: path:: PathBuf ;
5+
46use crate :: logging:: { LogLevel , LogMessage } ;
57use serde:: { Deserialize , Serialize } ;
68
@@ -24,13 +26,13 @@ pub enum EnvManagerType {
2426#[ derive( Serialize , Deserialize ) ]
2527#[ serde( rename_all = "camelCase" ) ]
2628pub struct EnvManager {
27- pub executable_path : String ,
29+ pub executable_path : PathBuf ,
2830 pub version : Option < String > ,
2931 pub tool : EnvManagerType ,
3032}
3133
3234impl EnvManager {
33- pub fn new ( executable_path : String , version : Option < String > , tool : EnvManagerType ) -> Self {
35+ pub fn new ( executable_path : PathBuf , version : Option < String > , tool : EnvManagerType ) -> Self {
3436 Self {
3537 executable_path,
3638 version,
@@ -84,27 +86,27 @@ pub enum PythonEnvironmentCategory {
8486#[ serde( rename_all = "camelCase" ) ]
8587pub struct PythonEnvironment {
8688 pub name : Option < String > ,
87- pub python_executable_path : Option < String > ,
89+ pub python_executable_path : Option < PathBuf > ,
8890 pub category : PythonEnvironmentCategory ,
8991 pub version : Option < String > ,
90- pub env_path : Option < String > ,
91- pub sys_prefix_path : Option < String > ,
92+ pub env_path : Option < PathBuf > ,
93+ pub sys_prefix_path : Option < PathBuf > ,
9294 pub env_manager : Option < EnvManager > ,
9395 pub python_run_command : Option < Vec < String > > ,
9496 /**
9597 * The project path for the Pipenv environment.
9698 */
97- pub project_path : Option < String > ,
99+ pub project_path : Option < PathBuf > ,
98100}
99101
100102impl PythonEnvironment {
101103 pub fn new (
102104 name : Option < String > ,
103- python_executable_path : Option < String > ,
105+ python_executable_path : Option < PathBuf > ,
104106 category : PythonEnvironmentCategory ,
105107 version : Option < String > ,
106- env_path : Option < String > ,
107- sys_prefix_path : Option < String > ,
108+ env_path : Option < PathBuf > ,
109+ sys_prefix_path : Option < PathBuf > ,
108110 env_manager : Option < EnvManager > ,
109111 python_run_command : Option < Vec < String > > ,
110112 ) -> Self {
@@ -121,12 +123,12 @@ impl PythonEnvironment {
121123 }
122124 }
123125 pub fn new_pipenv (
124- python_executable_path : Option < String > ,
126+ python_executable_path : Option < PathBuf > ,
125127 version : Option < String > ,
126- env_path : Option < String > ,
127- sys_prefix_path : Option < String > ,
128+ env_path : Option < PathBuf > ,
129+ sys_prefix_path : Option < PathBuf > ,
128130 env_manager : Option < EnvManager > ,
129- project_path : String ,
131+ project_path : PathBuf ,
130132 ) -> Self {
131133 Self {
132134 name : None ,
@@ -137,7 +139,7 @@ impl PythonEnvironment {
137139 sys_prefix_path,
138140 env_manager,
139141 python_run_command : match python_executable_path {
140- Some ( exe) => Some ( vec ! [ exe] ) ,
142+ Some ( exe) => Some ( vec ! [ exe. to_string_lossy ( ) . to_string ( ) ] ) ,
141143 None => None ,
142144 } ,
143145 project_path : Some ( project_path) ,
0 commit comments