aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-core/managers/github/init.lua2
-rw-r--r--lua/mason-registry/bash-debug-adapter/init.lua45
-rw-r--r--lua/mason-registry/index.lua1
-rw-r--r--lua/mason/mappings/language.lua4
4 files changed, 49 insertions, 3 deletions
diff --git a/lua/mason-core/managers/github/init.lua b/lua/mason-core/managers/github/init.lua
index 55f3600f..a0336d30 100644
--- a/lua/mason-core/managers/github/init.lua
+++ b/lua/mason-core/managers/github/init.lua
@@ -88,7 +88,7 @@ end
---@param processor async fun(opts: table)
local function release_file_processor(filename, processor)
---@async
- ---@param opts {repo: string, asset_file: string|fun(release: string):string}
+ ---@param opts {repo: string, version: Optional|nil, asset_file: string|fun(release: string):string}
return function(opts)
local release_file_source = M.release_file(opts)
std.download_file(release_file_source.download_url, filename)
diff --git a/lua/mason-registry/bash-debug-adapter/init.lua b/lua/mason-registry/bash-debug-adapter/init.lua
new file mode 100644
index 00000000..9331d967
--- /dev/null
+++ b/lua/mason-registry/bash-debug-adapter/init.lua
@@ -0,0 +1,45 @@
+local Pkg = require "mason-core.package"
+local github = require "mason-core.managers.github"
+local github_client = require "mason-core.managers.github.client"
+local _ = require "mason-core.functional"
+local path = require "mason-core.path"
+local Optional = require "mason-core.optional"
+
+return Pkg.new {
+ name = "bash-debug-adapter",
+ desc = [[Bash shell debugger, based on bashdb.]],
+ homepage = "https://github.com/rogalmic/vscode-bash-debug",
+ languages = { Pkg.Lang.JavaScript, Pkg.Lang.TypeScript },
+ categories = { Pkg.Cat.DAP },
+ ---@async
+ ---@param ctx InstallContext
+ install = function(ctx)
+ local repo = "rogalmic/vscode-bash-debug"
+ ---@type GitHubRelease
+ local release = ctx.requested_version
+ :map(function(version)
+ return github_client.fetch_release(repo, version)
+ end)
+ :or_else_get(function()
+ return github_client.fetch_latest_release(repo)
+ end)
+ :get_or_throw()
+
+ ---@type GitHubReleaseAsset
+ local release_asset = _.find_first(_.prop_satisfies(_.matches "%.vsix$", "name"), release.assets)
+
+ github
+ .unzip_release_file({
+ repo = repo,
+ asset_file = release_asset.name,
+ version = Optional.of(release.tag_name),
+ })
+ .with_receipt()
+
+ ctx.fs:rmrf(path.concat { "extension", "images" })
+ ctx:link_bin(
+ "bash-debug-adapter",
+ ctx:write_node_exec_wrapper("bash-debug-adapter", path.concat { "extension", "out", "bashDebug.js" })
+ )
+ end,
+}
diff --git a/lua/mason-registry/index.lua b/lua/mason-registry/index.lua
index 52b42b9d..dd280326 100644
--- a/lua/mason-registry/index.lua
+++ b/lua/mason-registry/index.lua
@@ -10,6 +10,7 @@ return {
["asm-lsp"] = "mason-registry.asm-lsp",
["astro-language-server"] = "mason-registry.astro-language-server",
["awk-language-server"] = "mason-registry.awk-language-server",
+ ["bash-debug-adapter"] = "mason-registry.bash-debug-adapter",
["bash-language-server"] = "mason-registry.bash-language-server",
["beancount-language-server"] = "mason-registry.beancount-language-server",
["bicep-lsp"] = "mason-registry.bicep-lsp",
diff --git a/lua/mason/mappings/language.lua b/lua/mason/mappings/language.lua
index e68cb5c0..0b38eef1 100644
--- a/lua/mason/mappings/language.lua
+++ b/lua/mason/mappings/language.lua
@@ -49,7 +49,7 @@ return {
hoon = { "hoon-language-server" },
html = { "erb-lint", "html-lsp", "prettier", "prettierd" },
java = { "clang-format", "jdtls" },
- javascript = { "chrome-debug-adapter", "clang-format", "deno", "eslint-lsp", "eslint_d", "firefox-debug-adapter", "node-debug2-adapter", "prettier", "prettierd", "quick-lint-js", "rome", "typescript-language-server", "xo" },
+ javascript = { "bash-debug-adapter", "chrome-debug-adapter", "clang-format", "deno", "eslint-lsp", "eslint_d", "firefox-debug-adapter", "node-debug2-adapter", "prettier", "prettierd", "quick-lint-js", "rome", "typescript-language-server", "xo" },
jinja = { "curlylint", "djlint" },
json = { "clang-format", "fixjson", "jq", "json-lsp", "prettier", "prettierd", "spectral-language-server" },
jsonnet = { "jsonnet-language-server" },
@@ -102,7 +102,7 @@ return {
text = { "grammarly-languageserver", "ltex-ls", "proselint", "vale" },
toml = { "taplo" },
twig = { "curlylint" },
- typescript = { "chrome-debug-adapter", "deno", "eslint-lsp", "eslint_d", "firefox-debug-adapter", "node-debug2-adapter", "prettier", "prettierd", "rome", "typescript-language-server", "xo" },
+ typescript = { "bash-debug-adapter", "chrome-debug-adapter", "deno", "eslint-lsp", "eslint_d", "firefox-debug-adapter", "node-debug2-adapter", "prettier", "prettierd", "rome", "typescript-language-server", "xo" },
v = { "vls" },
vala = { "vala-language-server" },
vimscript = { "vim-language-server", "vint" },