use std::path::{Path, PathBuf};
use anyhow::{Context, Result};
pub fn root_from_xtask_manifest(manifest_dir: impl AsRef<Path>) -> Result<PathBuf> {
manifest_dir
.as_ref()
.parent()
.map(Path::to_path_buf)
.context("could not locate repository root from xtask manifest directory")
}
pub fn join(root: impl AsRef<Path>, path: impl AsRef<Path>) -> PathBuf {
root.as_ref().join(path)
}
pub fn absolutize(root: impl AsRef<Path>, path: impl AsRef<Path>) -> PathBuf {
let path = path.as_ref();
if path.is_absolute() {
path.to_path_buf()
} else {
root.as_ref().join(path)
}
}