1use std::time::Duration;
4
5use tame_index::{index::FileLock, utils::flock::LockOptions};
6
7pub fn acquire_cargo_package_lock() -> Result<FileLock, tame_index::Error> {
9 let lock_opts = LockOptions::cargo_package_lock(None)?.exclusive(false);
10 acquire_lock(lock_opts, Duration::from_secs(0))
11}
12
13pub fn acquire_lock(
15 lock_opts: LockOptions<'_>,
16 lock_timeout: Duration,
17) -> Result<FileLock, tame_index::Error> {
18 if lock_timeout == Duration::from_secs(0) {
19 lock_opts.try_lock()
20 } else {
21 lock_opts.lock(|_| Some(lock_timeout))
22 }
23}