(lockDir: string, owner: FsLockOwner)
| 126 | } |
| 127 | |
| 128 | async function createLock(lockDir: string, owner: FsLockOwner): Promise<AcquiredFsLock> { |
| 129 | await fs.mkdir(lockDir, { mode: 0o700 }); |
| 130 | try { |
| 131 | await fs.writeFile(path.join(lockDir, FS_LOCK_OWNER_FILE), `${JSON.stringify(owner)}\n`, { |
| 132 | encoding: 'utf8', |
| 133 | mode: 0o600, |
| 134 | }); |
| 135 | } catch (error) { |
| 136 | await removeLockDir(lockDir); |
| 137 | throw error; |
| 138 | } |
| 139 | |
| 140 | return { |
| 141 | owner, |
| 142 | async release(): Promise<void> { |
| 143 | const currentOwner = await readLockOwner(lockDir); |
| 144 | if (currentOwner?.token !== owner.token) { |
| 145 | return; |
| 146 | } |
| 147 | await fs.rm(lockDir, { recursive: true, force: true }); |
| 148 | }, |
| 149 | }; |
| 150 | } |
| 151 | |
| 152 | async function tryAcquireGuard( |
| 153 | lockDir: string, |
no test coverage detected