feat(link): add hard_link_hash (#82)

Fixes: https://github.com/zkat/cacache-rs/issues/80
This commit is contained in:
Song Gao 2024-06-15 00:04:23 +08:00 committed by GitHub
parent 3a71247364
commit ab5f1c9185
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 1 deletions

View File

@ -402,6 +402,16 @@ where
read::reflink_async(cache.as_ref(), sri, to.as_ref()).await
}
/// Hard links a cache entry by hash to a specified location.
#[cfg(any(feature = "async-std", feature = "tokio"))]
pub async fn hard_link_hash<P, Q>(cache: P, sri: &Integrity, to: Q) -> Result<()>
where
P: AsRef<Path>,
Q: AsRef<Path>,
{
read::hard_link_async(cache.as_ref(), sri, to.as_ref()).await
}
/// Hard links a cache entry by key to a specified location.
#[cfg(any(feature = "async-std", feature = "tokio"))]
pub async fn hard_link<P, K, Q>(cache: P, key: K, to: Q) -> Result<()>
@ -412,7 +422,7 @@ where
{
async fn inner(cache: &Path, key: &str, to: &Path) -> Result<()> {
if let Some(entry) = index::find(cache, key)? {
read::hard_link_async(cache, &entry.integrity, to).await
hard_link_hash(cache, &entry.integrity, to).await
} else {
Err(Error::EntryNotFound(cache.to_path_buf(), key.into()))
}