diff options
author | kylo252 <[email protected]> | 2021-10-10 21:07:41 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2021-10-10 21:07:41 +0200 |
commit | 52b74557415eb757ad4b7481b0aec8a3f98dd58d (patch) | |
tree | 9a05ec71a46c99fbdf8df0043be652b528c7c04e /lua/bootstrap.lua | |
parent | e2c85df440564a62fd804555747b1652a6844a5e (diff) |
feat: add an independent lvim namespace (#1699)
Diffstat (limited to 'lua/bootstrap.lua')
-rw-r--r-- | lua/bootstrap.lua | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/lua/bootstrap.lua b/lua/bootstrap.lua deleted file mode 100644 index 866403b7..00000000 --- a/lua/bootstrap.lua +++ /dev/null @@ -1,193 +0,0 @@ -local M = {} - -package.loaded["utils.hooks"] = nil -local _, hooks = pcall(require, "utils.hooks") - ----Join path segments that were passed as input ----@return string -function _G.join_paths(...) - local uv = vim.loop - local path_sep = uv.os_uname().version:match "Windows" and "\\" or "/" - local result = table.concat({ ... }, path_sep) - return result -end - ----Get the full path to `$LUNARVIM_RUNTIME_DIR` ----@return string -function _G.get_runtime_dir() - local lvim_runtime_dir = os.getenv "LUNARVIM_RUNTIME_DIR" - if not lvim_runtime_dir then - -- when nvim is used directly - return vim.fn.stdpath "config" - end - return lvim_runtime_dir -end - ----Get the full path to `$LUNARVIM_CONFIG_DIR` ----@return string -function _G.get_config_dir() - local lvim_config_dir = os.getenv "LUNARVIM_CONFIG_DIR" - if not lvim_config_dir then - return vim.fn.stdpath "config" - end - return lvim_config_dir -end - ----Get the full path to `$LUNARVIM_CACHE_DIR` ----@return string -function _G.get_cache_dir() - local lvim_cache_dir = os.getenv "LUNARVIM_CACHE_DIR" - if not lvim_cache_dir then - return vim.fn.stdpath "cache" - end - return lvim_cache_dir -end - ----Get the full path to the currently installed lunarvim repo ----@return string -local function get_install_path() - local lvim_runtime_dir = os.getenv "LUNARVIM_RUNTIME_DIR" - if not lvim_runtime_dir then - -- when nvim is used directly - return vim.fn.stdpath "config" - end - return join_paths(lvim_runtime_dir, "lvim") -end - ----Get currently installed version of LunarVim ----@param type string can be "short" ----@return string -function _G.get_version(type) - type = type or "" - local lvim_full_ver = vim.fn.system("git -C " .. get_install_path() .. " describe --tags") - - if string.match(lvim_full_ver, "%d") == nil then - return nil - end - if type == "short" then - return vim.fn.split(lvim_full_ver, "-")[1] - else - return string.sub(lvim_full_ver, 1, #lvim_full_ver - 1) - end -end - ----Initialize the `&runtimepath` variables and prepare for startup ----@return table -function M:init() - self.runtime_dir = get_runtime_dir() - self.config_dir = get_config_dir() - self.cache_path = get_cache_dir() - self.install_path = get_install_path() - - self.pack_dir = join_paths(self.runtime_dir, "site", "pack") - self.packer_install_dir = join_paths(self.runtime_dir, "site", "pack", "packer", "start", "packer.nvim") - self.packer_cache_path = join_paths(self.config_dir, "plugin", "packer_compiled.lua") - - if os.getenv "LUNARVIM_RUNTIME_DIR" then - vim.opt.rtp:remove(join_paths(vim.fn.stdpath "data", "site")) - vim.opt.rtp:remove(join_paths(vim.fn.stdpath "data", "site", "after")) - vim.opt.rtp:prepend(join_paths(self.runtime_dir, "site")) - vim.opt.rtp:append(join_paths(self.runtime_dir, "site", "after")) - - vim.opt.rtp:remove(vim.fn.stdpath "config") - vim.opt.rtp:remove(join_paths(vim.fn.stdpath "config", "after")) - vim.opt.rtp:prepend(self.config_dir) - vim.opt.rtp:append(join_paths(self.config_dir, "after")) - -- TODO: we need something like this: vim.opt.packpath = vim.opt.rtp - - vim.cmd [[let &packpath = &runtimepath]] - vim.cmd("set spellfile=" .. join_paths(self.config_dir, "spell", "en.utf-8.add")) - end - - vim.fn.mkdir(vim.fn.stdpath "cache", "p") - - -- FIXME: currently unreliable in unit-tests - if not os.getenv "LVIM_TEST_ENV" then - require("impatient").setup { - path = vim.fn.stdpath "cache" .. "/lvim_cache", - enable_profiling = true, - } - end - - local config = require "config" - config:init { - path = join_paths(self.config_dir, "config.lua"), - } - - require("plugin-loader"):init { - package_root = self.pack_dir, - install_path = self.packer_install_dir, - } - - return self -end - ----Update LunarVim ----pulls the latest changes from github and, resets the startup cache -function M:update() - hooks.run_pre_update() - M:update_repo() - hooks.run_post_update() -end - -local function git_cmd(subcmd) - local Job = require "plenary.job" - local Log = require "core.log" - local args = { "-C", get_install_path() } - vim.list_extend(args, subcmd) - - local stderr = {} - local stdout, ret = Job - :new({ - command = "git", - args = args, - cwd = get_install_path(), - on_stderr = function(_, data) - table.insert(stderr, data) - end, - }) - :sync() - - if not vim.tbl_isempty(stderr) then - Log:debug(stderr) - end - - if not vim.tbl_isempty(stdout) then - Log:debug(stdout) - end - - return ret -end - ----pulls the latest changes from github -function M:update_repo() - local Log = require "core.log" - local sub_commands = { - fetch = { "fetch" }, - diff = { "diff", "--quiet", "@{upstream}" }, - merge = { "merge", "--ff-only", "--progress" }, - } - Log:info "Checking for updates" - - local ret = git_cmd(sub_commands.fetch) - if ret ~= 0 then - Log:error "Update failed! Check the log for further information" - return - end - - ret = git_cmd(sub_commands.diff) - - if ret == 0 then - Log:info "LunarVim is already up-to-date" - return - end - - ret = git_cmd(sub_commands.merge) - - if ret ~= 0 then - Log:error "Update failed! Please pull the changes manually instead." - return - end -end - -return M |