tmc_langs_util/
path_util.rs1use std::{
4 ffi::OsStr,
5 path::{Path, PathBuf},
6};
7
8pub fn get_parent_of_component_in_path(path: &Path, component: &str) -> Option<PathBuf> {
11 if path.components().any(|c| c.as_os_str() == component) {
12 let path: PathBuf = path
13 .components()
14 .take_while(|c| c.as_os_str() != component)
15 .collect();
16 if !path.components().any(|c| c.as_os_str() == "__MACOSX") {
17 return Some(path);
18 }
19 }
20 None
21}
22
23pub fn get_parent_of_named(path: &Path, name: &str) -> Option<PathBuf> {
26 if path.file_name() == Some(OsStr::new(name))
27 && !path.components().any(|c| c.as_os_str() == "__MACOSX")
28 {
29 return Some(path.parent().map(Path::to_path_buf).unwrap_or_default());
30 }
31 None
32}