autorestic/src/lock.ts

40 lines
808 B
TypeScript
Raw Normal View History

2020-05-17 18:13:50 +02:00
import fs from 'fs'
2020-11-06 23:51:23 +01:00
import { pathRelativeToConfigFile } from './utils'
import { Lockfile } from './types'
2020-05-17 18:13:50 +02:00
export const getLockFileName = () => {
const LOCK_FILE = '.autorestic.lock'
return pathRelativeToConfigFile(LOCK_FILE)
}
export const readLock = (): Lockfile => {
const name = getLockFileName()
let lock = {
running: false,
2020-11-06 23:51:23 +01:00
crons: {},
2020-05-17 18:13:50 +02:00
}
try {
lock = JSON.parse(fs.readFileSync(name, { encoding: 'utf-8' }))
2020-11-06 23:51:23 +01:00
} catch {}
2020-05-17 18:13:50 +02:00
return lock
}
export const writeLock = (lock: Lockfile) => {
const name = getLockFileName()
fs.writeFileSync(name, JSON.stringify(lock, null, 2), { encoding: 'utf-8' })
}
export const unlock = () => {
writeLock({
...readLock(),
running: false,
})
2020-11-06 23:51:23 +01:00
}
2020-12-09 00:07:03 +01:00
export const lock = () => {
writeLock({
...readLock(),
running: true,
})
}