mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-20 18:45:08 +02:00
ccb80e41ee
* refactor: convert plugins spec to lazy * refactor(lazy): remove impatient * fix(telescope): no more errors if theme is nil * refactor(lazy): use lazy in plugin_loader * refactor(lazy): pin plugins with packer's snapshot * fix: add plugins to rtp before config:init * fix: fs_stat nil check * feat: lazy cache * feat(lazy): reloading * refactor(lazy): plugin-loader functions * feat(lazy): cache reset * refactor: set runtimepath manually * fix: runtimepath * refactor(rtp) * refactor(lazy): packer -> lazy in various places * fix(lazy): disable tree-sitter ensure installed * refactor(lazy): restore order to bootstrap * refactor(lazy): remove unused impatient profiler * small fixes * `lvim.plugins` deprecation handling * fix: deprecation of `requires` in plugin specs * feat: core plugins pinning * refactor(lazy): plugin loader tests * refactor(lazy): use lazy in scripts * refactor(lazy): which-key keybinds * chore: format * fix: installer * fix: first time setup * feat: changes required for packaging commit 951ac2b7c01b5200b973660c967852d1706cce28 Author: LostNeophyte <lostneophyte@tuta.io> Date: Wed Dec 28 13:49:44 2022 +0100 fix: clean folder before copying plugins commit 64e9afa44b8e528ba527e0510d0d8c2d2237a095 Author: LostNeophyte <lostneophyte@tuta.io> Date: Wed Dec 28 13:35:41 2022 +0100 feat: copy core plugins on first run commit 2d8e72090c7624f68c09a9aa6582223373a810c1 Author: LostNeophyte <lostneophyte@tuta.io> Date: Wed Dec 28 13:11:22 2022 +0100 feat(utils): fs_copy commit 85c1f025a6ba13183e85141f75f60e2eefc77bb5 Author: LostNeophyte <lostneophyte@tuta.io> Date: Wed Dec 28 13:04:38 2022 +0100 fix: copy correct example config * fix: packer specs deprecation handling * fix: plugin specs deprecation * feat: pin lazy's version * fix: remove plugins form rtp before loading lazy * fix: plugin-loader test * feat(lazy): add keymappings for profile, log, and debug (#3665) * feat(lazy): Add keymappings for profile, log, and debug * feat(lazy): Add keymap for cleaning * chore: format * pref: lazy load many plugins Co-authored-by: Uzair Aftab <uzaaft@outlook.com> * fix: bootstrap correct version of lazy * fix: also use CmdLineEnter event for cmp * fix: don't use lazy's modules before it's set up * perf: (hack) enable lazy's cache before loading lazy * fix: plugins.lua * fix: plugins bump script * chore: remove debug print * feat: add rounded border for `:Lazy` * fix: bufferline flashing * fix: don't close lazy on startup * fix: load breadcrumbs on startup * fix: don't lazy load bufferline * chore: bump lazy's version * fix: remove site from rtp (fixes treesitter issues) * revert default config copying changes * fix(bootstrap): actually remove plugins dir on windows * chore: bump lazy's version * chore: bump lazy's version Co-authored-by: kylo252 <59826753+kylo252@users.noreply.github.com> Co-authored-by: Uzair Aftab <48220549+Uzaaft@users.noreply.github.com> Co-authored-by: Uzair Aftab <uzaaft@outlook.com> Co-authored-by: opalmay <opal.mizrahi2@gmail.com>
125 lines
2.9 KiB
Lua
125 lines
2.9 KiB
Lua
local sp = os.getenv "SNAPSHOT_PATH"
|
|
|
|
local function call_proc(process, opts, cb)
|
|
local output, error_output = "", ""
|
|
local handle_stdout = function(err, chunk)
|
|
assert(not err, err)
|
|
if chunk then
|
|
output = output .. chunk
|
|
end
|
|
end
|
|
|
|
local handle_stderr = function(err, chunk)
|
|
assert(not err, err)
|
|
if chunk then
|
|
error_output = error_output .. chunk
|
|
end
|
|
end
|
|
|
|
local uv = vim.loop
|
|
local handle
|
|
|
|
local stdout = uv.new_pipe(false)
|
|
local stderr = uv.new_pipe(false)
|
|
|
|
local stdio = { nil, stdout, stderr }
|
|
|
|
handle = uv.spawn(
|
|
process,
|
|
{ args = opts.args, cwd = opts.cwd or uv.cwd(), stdio = stdio },
|
|
vim.schedule_wrap(function(code)
|
|
if code ~= 0 then
|
|
stdout:read_stop()
|
|
stderr:read_stop()
|
|
end
|
|
|
|
local check = uv.new_check()
|
|
check:start(function()
|
|
for _, pipe in ipairs(stdio) do
|
|
if pipe and not pipe:is_closing() then
|
|
return
|
|
end
|
|
end
|
|
check:stop()
|
|
handle:close()
|
|
cb(code, output, error_output)
|
|
end)
|
|
end)
|
|
)
|
|
|
|
uv.read_start(stdout, handle_stdout)
|
|
uv.read_start(stderr, handle_stderr)
|
|
|
|
return handle
|
|
end
|
|
|
|
local plugins_list = {}
|
|
|
|
local completed = 0
|
|
|
|
local function write_lockfile(verbose)
|
|
local default_plugins = {}
|
|
local active_jobs = {}
|
|
|
|
local core_plugins = require "lvim.plugins"
|
|
for _, plugin in pairs(core_plugins) do
|
|
local name = plugin[1]:match "/(%S*)"
|
|
local url = "https://github.com/" .. plugin[1]
|
|
local commit = ""
|
|
table.insert(default_plugins, {
|
|
name = name,
|
|
url = url,
|
|
commit = commit,
|
|
branch = plugin.branch or "HEAD",
|
|
tag = plugin.tag,
|
|
})
|
|
end
|
|
|
|
table.sort(default_plugins, function(a, b)
|
|
return a.name < b.name
|
|
end)
|
|
|
|
for _, entry in pairs(default_plugins) do
|
|
local on_done = function(success, result, errors)
|
|
completed = completed + 1
|
|
if not success then
|
|
print("error: " .. errors)
|
|
return
|
|
end
|
|
local latest_sha = result:gsub("\tHEAD\n", ""):sub(1, 7)
|
|
if entry.tag then
|
|
local dereferenced_commit = result:match("\n(.*)\trefs/tags/" .. entry.tag .. "%^{}\n")
|
|
if dereferenced_commit then
|
|
latest_sha = dereferenced_commit:sub(1, 7)
|
|
end
|
|
end
|
|
plugins_list[entry.name] = {
|
|
commit = latest_sha,
|
|
}
|
|
end
|
|
|
|
local handle = call_proc("git", {
|
|
args = { "ls-remote", entry.url, entry.tag and entry.tag .. "*" or entry.branch },
|
|
}, on_done)
|
|
assert(handle)
|
|
table.insert(active_jobs, handle)
|
|
end
|
|
|
|
print("active: " .. #active_jobs)
|
|
print("plugins: " .. #default_plugins)
|
|
|
|
vim.wait(#active_jobs * 60 * 1000, function()
|
|
return completed == #active_jobs
|
|
end)
|
|
|
|
if verbose then
|
|
print(vim.inspect(plugins_list))
|
|
end
|
|
|
|
local fd = assert(io.open(sp, "w"))
|
|
fd:write(vim.json.encode(plugins_list), "\n")
|
|
fd:flush()
|
|
end
|
|
|
|
write_lockfile()
|
|
vim.cmd "q"
|