diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 3f84e91a..69561c1d 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -128,6 +128,7 @@ local defaults = { } M.json = { + version = 1, data = { version = nil, ---@type string? news = {}, ---@type table @@ -144,24 +145,13 @@ function M.json.load() local ok, json = pcall(vim.json.decode, data, { luanil = { object = true, array = true } }) if ok then M.json.data = vim.tbl_deep_extend("force", M.json.data, json or {}) - if M.json.data.hashes then - ---@diagnostic disable-next-line: no-unknown - M.json.data.hashes = nil - M.json.save() + if M.json.data.version ~= M.json.version then + Util.json.migrate() end end end end -function M.json.save() - local path = vim.fn.stdpath("config") .. "/lazyvim.json" - local f = io.open(path, "w") - if f then - f:write(Util.json.encode(M.json.data)) - f:close() - end -end - ---@type LazyVimOptions local options diff --git a/lua/lazyvim/util/json.lua b/lua/lazyvim/util/json.lua index 73c4fb15..b8428add 100644 --- a/lua/lazyvim/util/json.lua +++ b/lua/lazyvim/util/json.lua @@ -1,3 +1,4 @@ +local Config = require("lazyvim.config") local Util = require("lazyvim.util") ---@class lazyvim.util.json @@ -45,4 +46,33 @@ function M.encode(value) return encode(value, "") end +function M.save() + local path = vim.fn.stdpath("config") .. "/lazyvim.json" + local f = io.open(path, "w") + if f then + f:write(Util.json.encode(Config.json.data)) + f:close() + end +end + +function M.migrate() + Util.info("Migrating `lazyvim.json` to version `" .. Config.json.version .. "`") + local json = Config.json + + -- v0 + if not json.data.version then + if json.data.hashes then + ---@diagnostic disable-next-line: no-unknown + json.data.hashes = nil + end + json.data.extras = vim.tbl_map(function(extra) + return "lazyvim.plugins.extras." .. extra + end, json.data.extras or {}) + end + + json.data.version = Config.json.version + + M.save() +end + return M diff --git a/lua/lazyvim/util/news.lua b/lua/lazyvim/util/news.lua index a4517bf5..11707155 100644 --- a/lua/lazyvim/util/news.lua +++ b/lua/lazyvim/util/news.lua @@ -60,7 +60,7 @@ function M.open(file, opts) return end Config.json.data.news[ref] = hash - Config.json.save() + Util.json.save() end local float = require("lazy.util").float({