feat: automated setup works finally

This commit is contained in:
2025-10-26 02:53:13 +03:00
parent 2692b95109
commit cd5025859c
7 changed files with 135 additions and 168 deletions

View File

@@ -1,53 +1,52 @@
local M = {}
function M.install_pm()
local function clone_package_manager()
local path = vim.fn.stdpath('data') .. '/site/pack/paqs/opt/paq-nvim'
if not vim.uv.fs_stat(path) then
local repo = 'https://github.com/savq/paq-nvim.git'
local cmd = { 'git', 'clone', '--depth=1', repo, path }
vim.system(cmd):wait()
print("Installed: paq")
local result = vim.system(cmd):wait()
if result.code == 0 then
print('Package manager installed correctly')
end
end
end
function M.install_packages()
print("Installing packages...")
vim.cmd.packadd('paq-nvim')
local packages = require('setup.packages').get()
local paq = require('paq')
paq(packages)
-- capture list of jobs before starting
local install_list = paq.install()
-- if nothing to install, skip wait
if not install_list or vim.tbl_isempty(install_list) then
vim.cmd('packloadall')
vim.cmd('silent! helptags ALL')
return
end
local function install_packages()
local done = false
vim.api.nvim_create_autocmd('User', {
pattern = 'PaqDoneInstall',
once = true,
callback = function()
vim.cmd('packloadall')
vim.cmd('silent! helptags ALL')
done = true
end,
})
-- wait until done or timeout
vim.wait(300000, function()
vim.cmd.packadd('paq-nvim')
local paq = require('paq')
local packages = require('setup.packages').get()
paq(packages)
paq.install()
local to_install = paq.query('to_install')
if #to_install == 0 then
return
end
vim.wait(60000, function()
return done
end, 200)
if not done then
print('Paq installation timeout or failed')
else
print('Paq installation completed')
end
end
local function install_languages()
vim.cmd.packadd('mason.nvim')
require('mason').setup()
function M.install_languages()
local lm = require('plugins.language-manager')
lm.invalidate_cache()
lm.load_specs()
@@ -55,9 +54,13 @@ function M.install_languages()
end
vim.api.nvim_create_user_command('InstallAll', function()
M.install_pm()
M.install_packages()
M.install_languages()
print('> Starting clone package manager...')
clone_package_manager()
print('\n> Starting installing packages...')
install_packages()
print('\n> Starting installing languages: ts parsers, language servers, linters, formatters...')
install_languages()
print('\n=== Install Finished ===\n\n')
end, {})
vim.api.nvim_create_user_command('FetchLspConfigs', function()
@@ -70,7 +73,7 @@ vim.api.nvim_create_user_command('FetchLspConfigs', function()
local lsp_dir = vim.fs.joinpath(vim.fn.getcwd(), 'lsp')
vim.fn.mkdir(lsp_dir, 'p')
for _, name in ipairs(general.language_servers) do
for _, name in ipairs(general.language_servers or {}) do
local file = vim.fs.joinpath(lsp_dir, name .. '.lua')
if vim.fn.filereadable(file) == 0 then
local url = base_url .. name .. '.lua'
@@ -87,5 +90,3 @@ vim.api.nvim_create_user_command('FetchLspConfigs', function()
end
end
end, { desc = 'Fetch default LSP configs into ./lsp in cwd' })
return M