Skip to content

Commit baac551

Browse files
committed
fix(lockfile): keep cond=false and enabed=false in lockfile. Fixes #1535. Fixes #1606
1 parent 407e65c commit baac551

File tree

1 file changed

+28
-27
lines changed

1 file changed

+28
-27
lines changed

lua/lazy/manage/lock.lua

+28-27
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,53 @@ local Git = require("lazy.manage.git")
33

44
local M = {}
55

6-
---@type table<string, {commit:string, branch:string}>
6+
---@alias LazyLockfile table<string, {commit:string, branch:string}>
7+
---@type LazyLockfile
78
M.lock = {}
89
M._loaded = false
910

1011
function M.update()
12+
M.load()
1113
vim.fn.mkdir(vim.fn.fnamemodify(Config.options.lockfile, ":p:h"), "p")
1214
local f = assert(io.open(Config.options.lockfile, "wb"))
1315
f:write("{\n")
14-
M.lock = {}
1516

16-
---@param plugin LazyPlugin
17-
local plugins = vim.tbl_filter(function(plugin)
18-
return not plugin._.is_local and plugin._.installed
19-
end, Config.plugins)
17+
-- keep disabled and cond plugins
18+
for name in pairs(M.lock) do
19+
if not (Config.spec.disabled[name] or Config.spec.ignore_installed[name]) then
20+
M.lock[name] = nil
21+
end
22+
end
23+
24+
for _, plugin in pairs(Config.plugins) do
25+
if not plugin._.is_local and plugin._.installed then
26+
local info = assert(Git.info(plugin.dir))
27+
M.lock[plugin.name] = {
28+
branch = info.branch or assert(Git.get_branch(plugin)),
29+
commit = assert(info.commit, "commit is nil"),
30+
}
31+
end
32+
end
2033

21-
---@param plugin LazyPlugin
2234
---@type string[]
23-
local names = vim.tbl_map(function(plugin)
24-
return plugin.name
25-
end, plugins)
35+
local names = vim.tbl_keys(M.lock)
2636
table.sort(names)
2737

2838
for n, name in ipairs(names) do
29-
local plugin = Config.plugins[name]
30-
if not plugin._.is_local and plugin._.installed then
31-
local info = assert(Git.info(plugin.dir))
32-
if not info.branch then
33-
info.branch = assert(Git.get_branch(plugin))
34-
end
35-
info.commit = info.commit
36-
-- f:write(([[ [%q] = { branch = %q, commit = %q },]]):format(name, info.branch, info.commit) .. "\n")
37-
f:write(([[ %q: { "branch": %q, "commit": %q }]]):format(name, info.branch, info.commit))
38-
if n ~= #names then
39-
f:write(",\n")
40-
end
41-
---@diagnostic disable-next-line: assign-type-mismatch
42-
M.lock[plugin.name] = info
39+
local info = M.lock[name]
40+
f:write(([[ %q: { "branch": %q, "commit": %q }]]):format(name, info.branch, info.commit))
41+
if n ~= #names then
42+
f:write(",\n")
4343
end
4444
end
4545
f:write("\n}")
4646
f:close()
4747
end
4848

4949
function M.load()
50+
if M._loaded then
51+
return
52+
end
5053
M.lock = {}
5154
M._loaded = true
5255
local f = io.open(Config.options.lockfile, "r")
@@ -64,9 +67,7 @@ end
6467
---@param plugin LazyPlugin
6568
---@return {commit:string, branch:string}
6669
function M.get(plugin)
67-
if not M._loaded then
68-
M.load()
69-
end
70+
M.load()
7071
return M.lock[plugin.name]
7172
end
7273

0 commit comments

Comments
 (0)