78 lines
2.7 KiB
Lua
78 lines
2.7 KiB
Lua
-- ╭─────────────────────────────────────────────────────────╮
|
|
-- │ ROCKS │
|
|
-- ╰─────────────────────────────────────────────────────────╯
|
|
|
|
-- ━━━━━━━━━━━━━━━━━━━━━━━━ Bootstrap rocks.nvim ━━━━━━━━━━━━━━━━━━━━━
|
|
do
|
|
-- Specifies where to install/use rocks.nvim
|
|
---@diagnostic disable-next-line: param-type-mismatch
|
|
local install_location = vim.fs.joinpath(vim.fn.stdpath("data"), "rocks")
|
|
|
|
-- Set up configuration options related to rocks.nvim (recommended to leave as default)
|
|
local rocks_config = {
|
|
rocks_path = vim.fs.normalize(install_location),
|
|
}
|
|
|
|
vim.g.rocks_nvim = rocks_config
|
|
|
|
-- Configure the package path (so that plugin code can be found)
|
|
local luarocks_path = {
|
|
vim.fs.joinpath(rocks_config.rocks_path, "share", "lua", "5.1", "?.lua"),
|
|
vim.fs.joinpath(
|
|
rocks_config.rocks_path,
|
|
"share",
|
|
"lua",
|
|
"5.1",
|
|
"?",
|
|
"init.lua"
|
|
),
|
|
}
|
|
package.path = package.path .. ";" .. table.concat(luarocks_path, ";")
|
|
|
|
-- Configure the C path (so that e.g. tree-sitter parsers can be found)
|
|
local luarocks_cpath = {
|
|
vim.fs.joinpath(rocks_config.rocks_path, "lib", "lua", "5.1", "?.so"),
|
|
vim.fs.joinpath(rocks_config.rocks_path, "lib64", "lua", "5.1", "?.so"),
|
|
}
|
|
package.cpath = package.cpath .. ";" .. table.concat(luarocks_cpath, ";")
|
|
|
|
-- Load all installed plugins, including rocks.nvim itself
|
|
vim.opt.runtimepath:append(
|
|
vim.fs.joinpath(
|
|
rocks_config.rocks_path,
|
|
"lib",
|
|
"luarocks",
|
|
"rocks-5.1",
|
|
"rocks.nvim",
|
|
"*"
|
|
)
|
|
)
|
|
end
|
|
|
|
-- If rocks.nvim is not installed then install it!
|
|
if not pcall(require, "rocks") then
|
|
---@diagnostic disable-next-line: param-type-mismatch
|
|
local rocks_location = vim.fs.joinpath(vim.fn.stdpath("cache"), "rocks.nvim")
|
|
|
|
if not vim.uv.fs_stat(rocks_location) then
|
|
-- Pull down rocks.nvim
|
|
vim.fn.system({
|
|
"git",
|
|
"clone",
|
|
"--filter=blob:none",
|
|
"https://github.com/nvim-neorocks/rocks.nvim",
|
|
rocks_location,
|
|
})
|
|
end
|
|
|
|
-- If the clone was successful then source the bootstrapping script
|
|
assert(
|
|
vim.v.shell_error == 0,
|
|
"rocks.nvim installation failed. Try exiting and re-entering Neovim!"
|
|
)
|
|
|
|
vim.cmd.source(vim.fs.joinpath(rocks_location, "bootstrap.lua"))
|
|
|
|
vim.fn.delete(rocks_location, "rf")
|
|
end
|