Compare commits
2 changed files with 0 additions and 51 deletions
|
|
@ -1,29 +0,0 @@
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn empty() {
|
|
||||||
assert_eq!(crate::common_parent::<PathBuf>(&[]), PathBuf::new());
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn single1() {
|
|
||||||
assert_eq!(crate::common_parent::<&str>(&["a"]).as_path(), "");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn single2() {
|
|
||||||
assert_eq!(crate::common_parent::<&str>(&["/a"]).as_path(), "/");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn double() {
|
|
||||||
assert_eq!(crate::common_parent::<&str>(&["d/a", "d/b"]).as_path(), "d");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn dir_file() {
|
|
||||||
assert_eq!(
|
|
||||||
crate::common_parent::<&str>(&["./d", "./d/f"]).as_path(),
|
|
||||||
"."
|
|
||||||
);
|
|
||||||
}
|
|
||||||
22
src/lib.rs
22
src/lib.rs
|
|
@ -1,4 +1,3 @@
|
||||||
use std::path::Path;
|
|
||||||
use std::{ffi::OsString, io::Read, path::PathBuf, str::FromStr, string::FromUtf8Error};
|
use std::{ffi::OsString, io::Read, path::PathBuf, str::FromStr, string::FromUtf8Error};
|
||||||
|
|
||||||
use anyhow::bail;
|
use anyhow::bail;
|
||||||
|
|
@ -81,27 +80,6 @@ pub fn actions_token() -> Result<SecretString, ActionsTokenError> {
|
||||||
Ok(SecretString::new(str.into_boxed_str()))
|
Ok(SecretString::new(str.into_boxed_str()))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn common_parent<P: AsRef<Path>>(paths: &[P]) -> PathBuf {
|
|
||||||
let Some((path0, paths)) = paths.split_first() else {
|
|
||||||
return PathBuf::new();
|
|
||||||
};
|
|
||||||
let mut common = PathBuf::new();
|
|
||||||
for comp in path0.as_ref() {
|
|
||||||
common.push(comp);
|
|
||||||
if !paths.iter().all(|p| p.as_ref().starts_with(&common)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// first path is common to all the paths, or the last component does not match all the paths
|
|
||||||
//
|
|
||||||
// either way, we need to pop a single component from the end
|
|
||||||
common.pop();
|
|
||||||
common
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod common_paths_tests;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Client {
|
pub struct Client {
|
||||||
http_client: HttpClient,
|
http_client: HttpClient,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue