mirror of
				https://github.com/folke/lazy.nvim.git
				synced 2025-11-04 00:11:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			880 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			880 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
local Config = require("lazy.core.config")
 | 
						|
local Util = require("lazy.util")
 | 
						|
 | 
						|
---@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)
 |