2023-01-18 15:24:43 +08:00
|
|
|
local Config = require("lazy.core.config")
|
2023-10-09 17:25:42 +08:00
|
|
|
local Util = require("lazy.util")
|
2023-01-18 15:24:43 +08:00
|
|
|
|
|
|
|
---@type LazyState
|
|
|
|
local M = {}
|
|
|
|
|
|
|
|
---@class LazyState
|
|
|
|
local defaults = {
|
|
|
|
checker = {
|
|
|
|
last_check = 0,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
---@type LazyState
|
|
|
|
local data = nil
|
|
|
|
|
|
|
|
function M.read()
|
|
|
|
pcall(function()
|
|
|
|
---@diagnostic disable-next-line: cast-local-type
|
|
|
|
data = vim.json.decode(Util.read_file(Config.options.state))
|
|
|
|
end)
|
|
|
|
data = vim.tbl_deep_extend("force", {}, defaults, data or {})
|
|
|
|
end
|
|
|
|
|
|
|
|
function M.write()
|
|
|
|
vim.fn.mkdir(vim.fn.fnamemodify(Config.options.state, ":p:h"), "p")
|
|
|
|
Util.write_file(Config.options.state, vim.json.encode(data))
|
|
|
|
end
|
|
|
|
|
|
|
|
function M.__index(_, key)
|
|
|
|
if not data then
|
|
|
|
M.read()
|
|
|
|
end
|
|
|
|
return data[key]
|
|
|
|
end
|
|
|
|
|
|
|
|
function M.__setindex(_, key, value)
|
|
|
|
if not data then
|
|
|
|
M.read()
|
|
|
|
end
|
|
|
|
---@diagnostic disable-next-line: no-unknown
|
|
|
|
data[key] = value
|
|
|
|
end
|
|
|
|
|
|
|
|
return setmetatable(M, M)
|