diff options
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/ci/generate_new_lockfile.lua | 114 | ||||
| -rw-r--r-- | utils/ci/generate_new_lockfile.sh | 19 | ||||
| -rw-r--r-- | utils/installer/config.example.lua | 4 | ||||
| -rw-r--r-- | utils/installer/config_win.example.lua | 4 | ||||
| -rw-r--r-- | utils/installer/install.ps1 | 2 | ||||
| -rw-r--r-- | utils/installer/uninstall.ps1 | 10 | 
6 files changed, 146 insertions, 7 deletions
| diff --git a/utils/ci/generate_new_lockfile.lua b/utils/ci/generate_new_lockfile.lua new file mode 100644 index 00000000..9f274597 --- /dev/null +++ b/utils/ci/generate_new_lockfile.lua @@ -0,0 +1,114 @@ +local sp = os.getenv "SNAPSHOT_PATH" + +local function call_proc(process, opts, cb) +  local std_output = "" +  local error_output = "" + +  local function onread(_, is_stderr) +    return function(err, data) +      if data then +        if is_stderr then +          error_output = (error_output or "") .. err +        else +          std_output = (std_output or "") .. data +        end +      end +    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 = 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, std_output, error_output) +      end) +    end) +  ) + +  uv.read_start(stdout, onread(handle, false)) +  uv.read_start(stderr, onread(handle, true)) + +  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, +    }) +  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) +      plugins_list[entry.name] = { +        commit = latest_sha, +      } +    end + +    local handle = call_proc("git", { args = { "ls-remote", entry.url, "HEAD" } }, on_done) +    table.insert(active_jobs, handle) +  end + +  print("active: " .. #active_jobs) +  print("parsers: " .. #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" diff --git a/utils/ci/generate_new_lockfile.sh b/utils/ci/generate_new_lockfile.sh new file mode 100644 index 00000000..077df41f --- /dev/null +++ b/utils/ci/generate_new_lockfile.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e + +REPO_DIR=$(git rev-parse --show-toplevel) + +export SNAPSHOT_NAME="default.json" +export SNAPSHOT_DIR="${REPO_DIR}/snapshots" + +mkdir -p "${SNAPSHOT_DIR}" + +export SNAPSHOT_PATH="${REPO_DIR}/snapshots/${SNAPSHOT_NAME}" + +time lvim --headless \ +  -c "luafile ./utils/ci/generate_new_lockfile.lua" + +temp=$(mktemp) + +jq --sort-keys . "${SNAPSHOT_PATH}" >"${temp}" +mv "${temp}" "${SNAPSHOT_PATH}" diff --git a/utils/installer/config.example.lua b/utils/installer/config.example.lua index 4ea98fbe..409235a5 100644 --- a/utils/installer/config.example.lua +++ b/utils/installer/config.example.lua @@ -46,10 +46,10 @@ lvim.keys.normal_mode["<C-s>"] = ":w<cr>"  --   name = "+Trouble",  --   r = { "<cmd>Trouble lsp_references<cr>", "References" },  --   f = { "<cmd>Trouble lsp_definitions<cr>", "Definitions" }, ---   d = { "<cmd>Trouble lsp_document_diagnostics<cr>", "Diagnostics" }, +--   d = { "<cmd>Trouble document_diagnostics<cr>", "Diagnostics" },  --   q = { "<cmd>Trouble quickfix<cr>", "QuickFix" },  --   l = { "<cmd>Trouble loclist<cr>", "LocationList" }, ---   w = { "<cmd>Trouble lsp_workspace_diagnostics<cr>", "Diagnostics" }, +--   w = { "<cmd>Trouble workspace_diagnostics<cr>", "Wordspace Diagnostics" },  -- }  -- TODO: User Config for predefined plugins diff --git a/utils/installer/config_win.example.lua b/utils/installer/config_win.example.lua index 9c9888a8..ecfbd1e4 100644 --- a/utils/installer/config_win.example.lua +++ b/utils/installer/config_win.example.lua @@ -63,10 +63,10 @@ lvim.keys.normal_mode["<C-s>"] = ":w<cr>"  --   name = "+Trouble",  --   r = { "<cmd>Trouble lsp_references<cr>", "References" },  --   f = { "<cmd>Trouble lsp_definitions<cr>", "Definitions" }, ---   d = { "<cmd>Trouble lsp_document_diagnostics<cr>", "Diagnostics" }, +--   d = { "<cmd>Trouble document_diagnostics<cr>", "Diagnostics" },  --   q = { "<cmd>Trouble quickfix<cr>", "QuickFix" },  --   l = { "<cmd>Trouble loclist<cr>", "LocationList" }, ---   w = { "<cmd>Trouble lsp_workspace_diagnostics<cr>", "Diagnostics" }, +--   w = { "<cmd>Trouble workspace_diagnostics<cr>", "Workspace Diagnostics" },  -- }  -- After changing plugin config exit and reopen LunarVim, Run :PackerInstall :PackerCompile diff --git a/utils/installer/install.ps1 b/utils/installer/install.ps1 index bef15ac2..182e7bac 100644 --- a/utils/installer/install.ps1 +++ b/utils/installer/install.ps1 @@ -267,7 +267,7 @@ function create_alias {          return      } -    Add-Content -Path $PROFILE -Value $("Set-Alias lvim $lvim_bin") +    Add-Content -Path $PROFILE -Value $("`r`nSet-Alias lvim $lvim_bin")      Write-Host 'To use the new alias in this window reload your profile with: `. $PROFILE`' -ForegroundColor Green  } diff --git a/utils/installer/uninstall.ps1 b/utils/installer/uninstall.ps1 index 4d6ffa5d..2de21037 100644 --- a/utils/installer/uninstall.ps1 +++ b/utils/installer/uninstall.ps1 @@ -49,9 +49,15 @@ function remove_lvim_dirs($force) {          if (Test-Path $dir) {
              Remove-Item -Force -Recurse $dir
          }
 -        if ($force -eq $true -and (Test-Path "$dir.bak" -or Test-Path "$dir.old")) {
 -            Remove-Item -Force -Recurse "$dir.{bak,old}"
 +        if ($force -eq $true) {
 +            if (Test-Path "$dir.bak") {
 +                Remove-Item -Force -Recurse "$dir.bak"
 +            }
 +            if (Test-Path "$dir.old") {
 +                Remove-Item -Force -Recurse "$dir.old"
 +            }
          }
      }
  }
 +main($args)
\ No newline at end of file | 
