@@ -101,29 +101,20 @@ fn resolve_shadowenv_parents(from_shadowenv: &PathBuf) -> Result<Vec<PathBuf>, T
101
101
Err ( _) => return Ok ( vec ! [ ] ) ,
102
102
} ;
103
103
104
- let previous_working_dir = env:: current_dir ( ) . unwrap ( ) ;
105
- env:: set_current_dir ( from_shadowenv) . unwrap ( ) ;
106
-
107
104
// Must be a valid symlink.
108
105
// We need to resolve the symlink in context of the .shadowenv.d folder it is in.
109
106
let resolved_parent = fs:: read_link ( & parent_link)
110
- . and_then ( |resolved| resolved. canonicalize ( ) )
111
- . map_err ( |err| {
112
- env:: set_current_dir ( & previous_working_dir) . unwrap ( ) ;
113
-
114
- TraversalError :: ResolveError {
115
- parent_link_path : parent_link. to_string_lossy ( ) . to_string ( ) ,
116
- error : if metadata. is_symlink ( ) {
117
- err. to_string ( )
118
- } else {
119
- "Not a symlink" . to_owned ( )
120
- } ,
121
- }
107
+ . map ( |link_target| from_shadowenv. join ( link_target) )
108
+ . and_then ( |path| path. canonicalize ( ) )
109
+ . map_err ( |err| TraversalError :: ResolveError {
110
+ parent_link_path : parent_link. to_string_lossy ( ) . to_string ( ) ,
111
+ error : if metadata. is_symlink ( ) {
112
+ err. to_string ( )
113
+ } else {
114
+ "Not a symlink" . to_owned ( )
115
+ } ,
122
116
} ) ?;
123
117
124
- // Restore working directory.
125
- env:: set_current_dir ( previous_working_dir) . unwrap ( ) ;
126
-
127
118
// TODO: Refactor into better structure with the options.
128
119
let base_name = resolved_parent. file_name ( ) ;
129
120
let base_name_stringified = base_name. map ( |f| f. to_string_lossy ( ) ) ;
0 commit comments