summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-04-06 16:24:39 +0200
committerkylo252 <[email protected]>2022-04-06 16:24:39 +0200
commit2d0ba75d036f5c465bd38eb97fc5195d59e6e504 (patch)
treedbbd3495f7894285a0388fdface0fbedf7973c7a /utils
parent23feb96bcc8182f19528298817617336b866eadb (diff)
parentfcb16c0961cd2b6ca522a0b2088ad663fd605b85 (diff)
Merge remote-tracking branch 'origin/rolling'
Diffstat (limited to 'utils')
-rw-r--r--utils/ci/generate_new_lockfile.lua114
-rw-r--r--utils/ci/generate_new_lockfile.sh19
-rw-r--r--utils/installer/config.example.lua4
-rw-r--r--utils/installer/config_win.example.lua4
-rw-r--r--utils/installer/install.ps12
-rw-r--r--utils/installer/uninstall.ps110
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