feat(tvix/store): add NixPath::to_absolute_path

This provides a function returning a string starting with the store
path prefix, the counterpart of `from_absolute_path`.

Change-Id: I4947f3b00171fe70357c62b3d64dc769b69e7a44
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7774
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-01-06 14:02:50 +01:00 committed by flokli
parent 95bec264d5
commit f73ab76fce

View file

@ -71,6 +71,12 @@ impl NixPath {
} }
} }
// Converts the NixPath to an absolute store path string.
/// That is a string starting with the store prefix (/nix/store)
pub fn to_absolute_path(&self) -> String {
format!("{}/{}", STORE_DIR, self)
}
fn validate_characters(s: &str) -> Result<(), ParseNixPathError> { fn validate_characters(s: &str) -> Result<(), ParseNixPathError> {
for c in s.chars() { for c in s.chars() {
if c.is_ascii_alphanumeric() if c.is_ascii_alphanumeric()
@ -170,6 +176,11 @@ mod tests {
.expect("must parse"); .expect("must parse");
assert_eq!(nixpath_expected, nixpath_actual); assert_eq!(nixpath_expected, nixpath_actual);
assert_eq!(
"/nix/store/00bgd045z0d4icpbc2yyz4gx48ak44la-net-tools-1.60_p20170221182432",
nixpath_actual.to_absolute_path(),
);
} }
#[test] #[test]