diff options
| author | William Boman <william@redwill.se> | 2023-02-20 22:19:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-20 22:19:39 +0100 |
| commit | b8a6632a0f2d263199d5d480ca85477fe0f414ab (patch) | |
| tree | 57e1ee0f3cef078ec144ecdf1b2fa861acf47755 /lua/mason-registry/index | |
| parent | chore: autogenerate (#1015) (diff) | |
| download | mason-b8a6632a0f2d263199d5d480ca85477fe0f414ab.tar mason-b8a6632a0f2d263199d5d480ca85477fe0f414ab.tar.gz mason-b8a6632a0f2d263199d5d480ca85477fe0f414ab.tar.bz2 mason-b8a6632a0f2d263199d5d480ca85477fe0f414ab.tar.lz mason-b8a6632a0f2d263199d5d480ca85477fe0f414ab.tar.xz mason-b8a6632a0f2d263199d5d480ca85477fe0f414ab.tar.zst mason-b8a6632a0f2d263199d5d480ca85477fe0f414ab.zip | |
feat: configurable registries (#1016)
Diffstat (limited to 'lua/mason-registry/index')
280 files changed, 6812 insertions, 0 deletions
diff --git a/lua/mason-registry/index/actionlint/init.lua b/lua/mason-registry/index/actionlint/init.lua new file mode 100644 index 00000000..4d6e71bb --- /dev/null +++ b/lua/mason-registry/index/actionlint/init.lua @@ -0,0 +1,55 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "actionlint", + desc = [[Static checker for GitHub Actions workflow files]], + homepage = "https://github.com/rhysd/actionlint", + languages = { Pkg.Lang.YAML }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "rhysd/actionlint" + local function format_release_file(file) + return _.compose(_.format(file), _.gsub("^v", "")) + end + + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + asset_file = coalesce( + when(platform.is.mac_x64, format_release_file "actionlint_%s_darwin_amd64.tar.gz"), + when(platform.is.mac_arm64, format_release_file "actionlint_%s_darwin_arm64.tar.gz"), + when(platform.is.linux_x64, format_release_file "actionlint_%s_linux_amd64.tar.gz"), + when(platform.is.linux_arm, format_release_file "actionlint_%s_linux_armv6.tar.gz"), + when(platform.is.linux_arm64, format_release_file "actionlint_%s_linux_arm64.tar.gz"), + when(platform.is.linux_x86, format_release_file "actionlint_%s_linux_386.tar.gz") + ), + }) + .with_receipt() + std.chmod("+x", { "actionlint" }) + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = coalesce( + when(platform.is.win_arm64, format_release_file "actionlint_%s_windows_arm64.zip"), + when(platform.is.win_x64, format_release_file "actionlint_%s_windows_amd64.zip"), + when(platform.is.win_x86, format_release_file "actionlint_%s_windows_386.zip") + ), + }) + .with_receipt() + end, + } + ctx:link_bin("actionlint", platform.is.win and "actionlint.exe" or "actionlint") + end, +} diff --git a/lua/mason-registry/index/ada-language-server/init.lua b/lua/mason-registry/index/ada-language-server/init.lua new file mode 100644 index 00000000..da870817 --- /dev/null +++ b/lua/mason-registry/index/ada-language-server/init.lua @@ -0,0 +1,40 @@ +local Pkg = require "mason-core.package" +local path = require "mason-core.path" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "ada-language-server", + desc = [[Ada/SPARK language server]], + homepage = "https://github.com/AdaCore/ada_language_server", + languages = { Pkg.Lang.Ada }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "AdaCore/ada_language_server", + asset_file = function(release) + local target = coalesce( + when(platform.is.mac, "als-%s-macOS_amd64.zip"), + when(platform.is.linux_x64, "als-%s-Linux_amd64.zip"), + when(platform.is.win_x64, "als-%s-Windows_amd64.zip") + ) + return target and target:format(release) + end, + }) + .with_receipt() + + local binary = coalesce( + when(platform.is.mac, path.concat { "darwin", "ada_language_server" }), + when(platform.is.linux_x64, path.concat { "linux", "ada_language_server" }), + when(platform.is.win_x64, path.concat { "win32", "ada_language_server.exe" }) + ) + ctx:link_bin("ada_language_server", binary) + end, +} diff --git a/lua/mason-registry/index/alex/init.lua b/lua/mason-registry/index/alex/init.lua new file mode 100644 index 00000000..67d40455 --- /dev/null +++ b/lua/mason-registry/index/alex/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "alex", + desc = [[Catch insensitive, inconsiderate writing]], + homepage = "https://github.com/get-alex/alex", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "alex", bin = { "alex" } }, +} diff --git a/lua/mason-registry/index/angular-language-server/init.lua b/lua/mason-registry/index/angular-language-server/init.lua new file mode 100644 index 00000000..f56dd4cb --- /dev/null +++ b/lua/mason-registry/index/angular-language-server/init.lua @@ -0,0 +1,16 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "angular-language-server", + desc = _.dedent [[ + The Angular Language Service provides code editors with a way to get completions, errors, hints, and navigation + inside Angular templates. It works with external templates in separate HTML files, and also with in-line + templates. + ]], + homepage = "https://angular.io/guide/language-service", + languages = { Pkg.Lang.Angular }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@angular/language-server", "typescript", bin = { "ngserver" } }, +} diff --git a/lua/mason-registry/index/ansible-language-server/init.lua b/lua/mason-registry/index/ansible-language-server/init.lua new file mode 100644 index 00000000..abb6e1df --- /dev/null +++ b/lua/mason-registry/index/ansible-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "ansible-language-server", + desc = [[Ansible Language Server]], + homepage = "https://github.com/ansible/ansible-language-server", + languages = { Pkg.Lang.Ansible }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@ansible/ansible-language-server", bin = { "ansible-language-server" } }, +} diff --git a/lua/mason-registry/index/ansible-lint/init.lua b/lua/mason-registry/index/ansible-lint/init.lua new file mode 100644 index 00000000..1727e182 --- /dev/null +++ b/lua/mason-registry/index/ansible-lint/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "ansible-lint", + desc = _.dedent [[ + Ansible Lint is a command-line tool for linting playbooks, + roles and collections aimed toward any Ansible users. + ]], + homepage = "https://github.com/ansible/ansible-lint", + languages = { Pkg.Lang.Ansible }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "ansible-lint", bin = { "ansible-lint" } }, +} diff --git a/lua/mason-registry/index/antlers-language-server/init.lua b/lua/mason-registry/index/antlers-language-server/init.lua new file mode 100644 index 00000000..c518ed8c --- /dev/null +++ b/lua/mason-registry/index/antlers-language-server/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "antlers-language-server", + desc = _.dedent [[ + Provides rich language features for Statamic's Antlers templating language, including code completions, syntax + highlighting, and more. + ]], + homepage = "https://github.com/Stillat/vscode-antlers-language-server", + languages = { Pkg.Lang.Antlers }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "antlers-language-server", bin = { "antlersls" } }, +} diff --git a/lua/mason-registry/index/apex-language-server/init.lua b/lua/mason-registry/index/apex-language-server/init.lua new file mode 100644 index 00000000..e32dd98d --- /dev/null +++ b/lua/mason-registry/index/apex-language-server/init.lua @@ -0,0 +1,43 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local github_client = require "mason-core.managers.github.client" +local Optional = require "mason-core.optional" +local path = require "mason-core.path" +local _ = require "mason-core.functional" + +local JAR_FILE = "apex-jorje-lsp.jar" +return Pkg.new { + name = "apex-language-server", + desc = _.dedent [[ + The Apex Language Server is an IDE-agnostic way for tools to access code-editing capabilities such as code + completion, go to definition, find all usage, and refactoring. + ]], + homepage = "https://github.com/forcedotcom/salesforcedx-vscode", + languages = { Pkg.Lang.Apex }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "forcedotcom/salesforcedx-vscode" + + -- See https://github.com/forcedotcom/salesforcedx-vscode/issues/4184#issuecomment-1146052086 + ---@type GitHubRelease + local release = github_client + .fetch_releases(repo) + :map(_.find_first(_.prop_satisfies(_.compose(_.gt(0), _.length), "assets"))) + :map(Optional.of_nilable) + :get_or_throw() -- Result unwrap + :or_else_throw "Failed to find release with assets." -- Optional unwrap + + github + .unzip_release_file({ + version = Optional.of(release.tag_name), + asset_file = _.compose(_.format "salesforcedx-vscode-apex-%s.vsix", _.gsub("^v", "")), + repo = repo, + }) + .with_receipt() + + ctx.fs:rename(path.concat { "extension", "dist", JAR_FILE }, JAR_FILE) + ctx.fs:rmrf "extension" + end, +} diff --git a/lua/mason-registry/index/arduino-language-server/init.lua b/lua/mason-registry/index/arduino-language-server/init.lua new file mode 100644 index 00000000..1d2e686c --- /dev/null +++ b/lua/mason-registry/index/arduino-language-server/init.lua @@ -0,0 +1,44 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "arduino-language-server", + desc = [[An Arduino Language Server based on Clangd to Arduino code autocompletion]], + homepage = "https://github.com/arduino/arduino-language-server", + languages = { Pkg.Lang.Arduino }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local opts = { + repo = "arduino/arduino-language-server", + asset_file = function(release) + local target = coalesce( + when(platform.is.mac, "arduino-language-server_%s_macOS_64bit.tar.gz"), + when(platform.is.linux_x64, "arduino-language-server_%s_Linux_64bit.tar.gz"), + when(platform.is.linux_x86, "arduino-language-server_%s_Linux_32bit.tar.gz"), + when(platform.is.linux_arm64, "arduino-language-server_%s_Linux_ARM64.tar.gz"), + when(platform.is.win_x64, "arduino-language-server_%s_Windows_64bit.zip"), + when(platform.is.win_x86, "arduino-language-server_%s_Windows_32bit.zip") + ) + + return target and target:format(release) + end, + } + + platform.when { + unix = function() + github.untargz_release_file(opts).with_receipt() + ctx:link_bin("arduino-language-server", "arduino-language-server") + end, + win = function() + github.unzip_release_file(opts).with_receipt() + ctx:link_bin("arduino-language-server", "arduino-language-server.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/asm-lsp/init.lua b/lua/mason-registry/index/asm-lsp/init.lua new file mode 100644 index 00000000..9b2cc6fd --- /dev/null +++ b/lua/mason-registry/index/asm-lsp/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "asm-lsp", + desc = [[Language server for NASM/GAS/GO Assembly]], + homepage = "https://github.com/bergercookie/asm-lsp", + languages = { Pkg.Lang.Assembly }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("asm-lsp", { + bin = { "asm-lsp" }, + }), +} diff --git a/lua/mason-registry/index/astro-language-server/init.lua b/lua/mason-registry/index/astro-language-server/init.lua new file mode 100644 index 00000000..8e69ddfe --- /dev/null +++ b/lua/mason-registry/index/astro-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "astro-language-server", + desc = [[The Astro language server, its structure is inspired by the Svelte Language Server.]], + homepage = "https://github.com/withastro/language-tools", + languages = { Pkg.Lang.Astro }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@astrojs/language-server", "typescript", bin = { "astro-ls" } }, +} diff --git a/lua/mason-registry/index/autoflake/init.lua b/lua/mason-registry/index/autoflake/init.lua new file mode 100644 index 00000000..121abf34 --- /dev/null +++ b/lua/mason-registry/index/autoflake/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "autoflake", + desc = [[autoflake removes unused imports and unused variables from Python code.]], + homepage = "https://pypi.org/project/autoflake/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "autoflake", bin = { "autoflake" } }, +} diff --git a/lua/mason-registry/index/autopep8/init.lua b/lua/mason-registry/index/autopep8/init.lua new file mode 100644 index 00000000..18f34530 --- /dev/null +++ b/lua/mason-registry/index/autopep8/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "autopep8", + desc = [[A tool that automatically formats Python code to conform to the PEP 8 style guide]], + homepage = "https://pypi.org/project/autopep8/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "autopep8", bin = { "autopep8" } }, +} diff --git a/lua/mason-registry/index/awk-language-server/init.lua b/lua/mason-registry/index/awk-language-server/init.lua new file mode 100644 index 00000000..9b725cfa --- /dev/null +++ b/lua/mason-registry/index/awk-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "awk-language-server", + desc = [[Language Server for AWK]], + homepage = "https://github.com/Beaglefoot/awk-language-server", + languages = { Pkg.Lang.AWK }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "awk-language-server", bin = { "awk-language-server" } }, +} diff --git a/lua/mason-registry/index/bash-debug-adapter/init.lua b/lua/mason-registry/index/bash-debug-adapter/init.lua new file mode 100644 index 00000000..6d98e2e8 --- /dev/null +++ b/lua/mason-registry/index/bash-debug-adapter/init.lua @@ -0,0 +1,44 @@ +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.Bash }, + 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() + + 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/bash-language-server/init.lua b/lua/mason-registry/index/bash-language-server/init.lua new file mode 100644 index 00000000..26e16b7f --- /dev/null +++ b/lua/mason-registry/index/bash-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "bash-language-server", + desc = [[A language server for Bash]], + homepage = "https://github.com/bash-lsp/bash-language-server", + languages = { Pkg.Lang.Bash }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "bash-language-server", bin = { "bash-language-server" } }, +} diff --git a/lua/mason-registry/index/beancount-language-server/init.lua b/lua/mason-registry/index/beancount-language-server/init.lua new file mode 100644 index 00000000..9c545ff0 --- /dev/null +++ b/lua/mason-registry/index/beancount-language-server/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "beancount-language-server", + desc = [[A Language Server Protocol (LSP) for beancount files]], + homepage = "https://github.com/polarmutex/beancount-language-server", + languages = { Pkg.Lang.Beancount }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("beancount-language-server", { + bin = { "beancount-language-server" }, + }), +} diff --git a/lua/mason-registry/index/beautysh/init.lua b/lua/mason-registry/index/beautysh/init.lua new file mode 100644 index 00000000..786540a8 --- /dev/null +++ b/lua/mason-registry/index/beautysh/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "beautysh", + desc = [[beautysh - A Bash beautifier for the masses.]], + homepage = "https://github.com/lovesegfault/beautysh", + languages = { Pkg.Lang.Bash, Pkg.Lang.Csh, Pkg.Lang.Ksh, Pkg.Lang.Sh, Pkg.Lang.Zsh }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "beautysh", bin = { "beautysh" } }, +} diff --git a/lua/mason-registry/index/bicep-lsp/init.lua b/lua/mason-registry/index/bicep-lsp/init.lua new file mode 100644 index 00000000..8472505a --- /dev/null +++ b/lua/mason-registry/index/bicep-lsp/init.lua @@ -0,0 +1,42 @@ +local Pkg = require "mason-core.package" +local path = require "mason-core.path" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" + +return Pkg.new { + name = "bicep-lsp", + desc = [[Bicep is a declarative language for describing and deploying Azure resources]], + homepage = "https://github.com/Azure/bicep", + languages = { Pkg.Lang.Bicep }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + std.ensure_executable("dotnet", { help_url = "https://dotnet.microsoft.com/download" }) + ctx.fs:mkdir "vscode" + ctx:chdir("vscode", function() + -- The bicep-langserver.zip is a bit broken on POSIX systems - so we download it via the VSCode distribution + -- instead. See https://github.com/Azure/bicep/issues/3704. + github + .unzip_release_file({ + repo = "Azure/bicep", + asset_file = "vscode-bicep.vsix", + }) + .with_receipt() + end) + ctx.fs:rename(path.concat { "vscode", "extension", "bicepLanguageServer" }, "bicepLanguageServer") + ctx.fs:rmrf "vscode" + + ctx:link_bin( + "bicep-lsp", + ctx:write_shell_exec_wrapper( + "bicep-lsp", + ("dotnet %q"):format(path.concat { + ctx.package:get_install_path(), + "bicepLanguageServer", + "Bicep.LangServer.dll", + }) + ) + ) + end, +} diff --git a/lua/mason-registry/index/black/init.lua b/lua/mason-registry/index/black/init.lua new file mode 100644 index 00000000..5f26fe9a --- /dev/null +++ b/lua/mason-registry/index/black/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "black", + desc = [[Black, the uncompromising Python code formatter]], + homepage = "https://pypi.org/project/black/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "black", bin = { "black" } }, +} diff --git a/lua/mason-registry/index/blackd-client/init.lua b/lua/mason-registry/index/blackd-client/init.lua new file mode 100644 index 00000000..c90e5754 --- /dev/null +++ b/lua/mason-registry/index/blackd-client/init.lua @@ -0,0 +1,31 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "blackd-client", + desc = [[Tiny HTTP client for the Black (blackd) Python code formatter]], + homepage = "https://github.com/disrupted/blackd-client", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "disrupted/blackd-client", + asset_file = coalesce( + when(platform.is.mac, "blackd-client_macos"), + when(platform.is.linux_x64_gnu, "blackd-client_linux") + ), + out_file = "blackd-client", + }) + .with_receipt() + std.chmod("+x", { "blackd-client" }) + ctx:link_bin("blackd-client", "blackd-client") + end, +} diff --git a/lua/mason-registry/index/blade-formatter/init.lua b/lua/mason-registry/index/blade-formatter/init.lua new file mode 100644 index 00000000..1a16e183 --- /dev/null +++ b/lua/mason-registry/index/blade-formatter/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "blade-formatter", + desc = [[An opinionated blade template formatter for Laravel that respects readability]], + homepage = "https://github.com/shufo/blade-formatter", + languages = { Pkg.Lang.Blade }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "blade-formatter", bin = { "blade-formatter" } }, +} diff --git a/lua/mason-registry/index/blue/init.lua b/lua/mason-registry/index/blue/init.lua new file mode 100644 index 00000000..339d35d2 --- /dev/null +++ b/lua/mason-registry/index/blue/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "blue", + desc = _.dedent [[ + blue is a somewhat less uncompromising code formatter than black, the OG of Python formatters. We love the idea + of automatically formatting Python code, for the same reasons that inspired black, however we take issue with + some of the decisions black makes. Kudos to black for pioneering code formatting for Python, and for its + excellent implementation. + ]], + homepage = "https://blue.readthedocs.io/en/latest/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "blue", bin = { "blue" } }, +} diff --git a/lua/mason-registry/index/brighterscript-formatter/init.lua b/lua/mason-registry/index/brighterscript-formatter/init.lua new file mode 100644 index 00000000..1e993aad --- /dev/null +++ b/lua/mason-registry/index/brighterscript-formatter/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "brighterscript-formatter", + desc = [[A code formatter for BrightScript and BrighterScript.]], + homepage = "https://github.com/rokucommunity/brighterscript-formatter", + languages = { Pkg.Lang.BrighterScript }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "brighterscript-formatter", bin = { "bsfmt" } }, +} diff --git a/lua/mason-registry/index/brighterscript/init.lua b/lua/mason-registry/index/brighterscript/init.lua new file mode 100644 index 00000000..677fe690 --- /dev/null +++ b/lua/mason-registry/index/brighterscript/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "brighterscript", + desc = [[A superset of Roku's BrightScript language.]], + homepage = "https://github.com/RokuCommunity/brighterscript", + languages = { Pkg.Lang.BrighterScript }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Compiler }, + install = npm.packages { "brighterscript", bin = { "bsc" } }, +} diff --git a/lua/mason-registry/index/bsl-language-server/init.lua b/lua/mason-registry/index/bsl-language-server/init.lua new file mode 100644 index 00000000..2b5ad2ab --- /dev/null +++ b/lua/mason-registry/index/bsl-language-server/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +return Pkg.new { + name = "bsl-language-server", + desc = [[Implementation of Language Server Protocol for Language 1C (BSL)]], + homepage = "https://1c-syntax.github.io/bsl-language-server", + languages = { Pkg.Lang["1С:Enterprise"], Pkg.Lang.OneScript }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "1c-syntax/bsl-language-server", + out_file = "bsl-lsp.jar", + asset_file = function(release) + local version = release:gsub("^v", "") + return ("bsl-language-server-%s-exec.jar"):format(version) + end, + }) + .with_receipt() + + ctx:link_bin( + "bsl-language-server", + ctx:write_shell_exec_wrapper( + "bsl-language-server", + ("java -jar %q"):format(path.concat { ctx.package:get_install_path(), "bsl-lsp.jar" }) + ) + ) + end, +} diff --git a/lua/mason-registry/index/buf-language-server/init.lua b/lua/mason-registry/index/buf-language-server/init.lua new file mode 100644 index 00000000..fb18788f --- /dev/null +++ b/lua/mason-registry/index/buf-language-server/init.lua @@ -0,0 +1,14 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "buf-language-server", + desc = [[`bufls` is a prototype for the beginnings of a Protobuf language server compatible with Buf modules and workspaces.]], + homepage = "https://github.com/bufbuild/buf-language-server", + languages = { Pkg.Lang.Protobuf }, + categories = { Pkg.Cat.LSP }, + install = go.packages { + "github.com/bufbuild/buf-language-server/cmd/bufls", + bin = { "bufls" }, + }, +} diff --git a/lua/mason-registry/index/buf/init.lua b/lua/mason-registry/index/buf/init.lua new file mode 100644 index 00000000..28ab3e2a --- /dev/null +++ b/lua/mason-registry/index/buf/init.lua @@ -0,0 +1,39 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "buf", + desc = _.dedent [[ + The Buf CLI is a one stop shop for your local Protocol Buffers needs. It comes with a linter that enforces good + API designs, a breaking change detector, a generator, a formatter that formats your Protobuf files in accordance + with industry standards. It also helps you manage your Protobuf assets on the Buf Schema Registry. + ]], + homepage = "https://buf.build", + languages = { Pkg.Lang.Protobuf }, + categories = { Pkg.Cat.Linter, Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "bufbuild/buf", + out_file = platform.is.win and "buf.exe" or "buf", + asset_file = coalesce( + when(platform.is.mac_x64, "buf-Darwin-x86_64"), + when(platform.is.mac_arm64, "buf-Darwin-arm64"), + when(platform.is.linux_x64, "buf-Linux-x86_64"), + when(platform.is.linux_arm64, "buf-Linux-aarch64"), + when(platform.is.win_arm64, "buf-Windows-arm64.exe"), + when(platform.is.win_x64, "buf-Windows-x86_64.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "buf" }) + ctx:link_bin("buf", platform.is.win and "buf.exe" or "buf") + end, +} diff --git a/lua/mason-registry/index/buildifier/init.lua b/lua/mason-registry/index/buildifier/init.lua new file mode 100644 index 00000000..d245011e --- /dev/null +++ b/lua/mason-registry/index/buildifier/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "buildifier", + desc = [[buildifier is a tool for formatting and linting bazel BUILD, WORKSPACE, and .bzl files.]], + homepage = "https://github.com/bazelbuild/buildtools", + languages = { Pkg.Lang.Bazel }, + categories = { Pkg.Cat.Linter, Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "bazelbuild/buildtools", + out_file = platform.is.win and "buildifier.exe" or "buildifier", + asset_file = coalesce( + when(platform.is.mac_x64, "buildifier-darwin-amd64"), + when(platform.is.mac_arm64, "buildifier-darwin-arm64"), + when(platform.is.linux_x64, "buildifier-linux-amd64"), + when(platform.is.linux_arm64, "buildifier-linux-arm64"), + when(platform.is.win_x64, "buildifier-windows-amd64.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "buildifier" }) + ctx:link_bin("buildifier", platform.is.win and "buildifier.exe" or "buildifier") + end, +} diff --git a/lua/mason-registry/index/cbfmt/init.lua b/lua/mason-registry/index/cbfmt/init.lua new file mode 100644 index 00000000..1fda9ce7 --- /dev/null +++ b/lua/mason-registry/index/cbfmt/init.lua @@ -0,0 +1,49 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "cbfmt", + desc = _.dedent [[ + A tool to format codeblocks inside markdown and org documents. It iterates over all codeblocks, and formats them + with the tool(s) specified for the language of the block. + ]], + homepage = "https://github.com/lukas-reineke/cbfmt", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local asset_file = coalesce( + when(platform.is.mac, "cbfmt_macos-x86_64_%s.tar.gz"), + when(platform.is.linux_x64_gnu, "cbfmt_linux-x86_64_%s.tar.gz"), + when(platform.is.linux_x64_musl, "cbfmt_linux-x86_64-musl_%s.tar.gz"), + when(platform.is.win_x64, "cbfmt_windows-x86_64-msvc_%s.zip") + ) + + local source = platform.when { + unix = function() + return github.untargz_release_file { + repo = "lukas-reineke/cbfmt", + asset_file = _.format(asset_file), + } + end, + win = function() + return github.unzip_release_file { + repo = "lukas-reineke/cbfmt", + asset_file = _.format(asset_file), + } + end, + } + source.with_receipt() + local strip_extension = _.compose(_.gsub("%.zip$", ""), _.gsub("%.tar%.gz$", "")) + ctx:link_bin( + "cbfmt", + path.concat { strip_extension(source.asset_file), platform.is.win and "cbfmt.exe" or "cbfmt" } + ) + end, +} diff --git a/lua/mason-registry/index/cfn-lint/init.lua b/lua/mason-registry/index/cfn-lint/init.lua new file mode 100644 index 00000000..7eeee2f9 --- /dev/null +++ b/lua/mason-registry/index/cfn-lint/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "cfn-lint", + desc = _.dedent [[ + CloudFormation Linter. Validate AWS CloudFormation YAML/JSON templates against the AWS CloudFormation Resource + Specification and additional checks. Includes checking valid values for resource properties and best practices. + ]], + homepage = "https://github.com/aws-cloudformation/cfn-lint", + languages = { Pkg.Lang.YAML, Pkg.Lang.JSON }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "cfn-lint", bin = { "cfn-lint" } }, +} diff --git a/lua/mason-registry/index/chrome-debug-adapter/init.lua b/lua/mason-registry/index/chrome-debug-adapter/init.lua new file mode 100644 index 00000000..3ebfb736 --- /dev/null +++ b/lua/mason-registry/index/chrome-debug-adapter/init.lua @@ -0,0 +1,32 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local git = require "mason-core.managers.git" +local _ = require "mason-core.functional" +local path = require "mason-core.path" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "chrome-debug-adapter", + desc = [[Debug your JavaScript code running in Google Chrome.]], + homepage = "https://github.com/Microsoft/vscode-chrome-debug", + languages = { Pkg.Lang.JavaScript, Pkg.Lang.TypeScript }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.tag { repo = "Microsoft/vscode-chrome-debug" } + source.with_receipt() + git.clone { "https://github.com/Microsoft/vscode-chrome-debug", version = Optional.of(source.tag) } + ctx.spawn.npm { "install" } + ctx.spawn.npm { "run", "build" } + ctx.spawn.npm { "install", "--production", "--ignore-scripts" } + -- vscode-chrome-debug comes with a lot of extra baggage + ctx.fs:rmrf "images" + ctx.fs:rmrf "testdata" + ctx.fs:rmrf ".git" + ctx:link_bin( + "chrome-debug-adapter", + ctx:write_node_exec_wrapper("chrome-debug-adapter", path.concat { "out", "src", "chromeDebug.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/clang-format/init.lua b/lua/mason-registry/index/clang-format/init.lua new file mode 100644 index 00000000..62a9e4b9 --- /dev/null +++ b/lua/mason-registry/index/clang-format/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "clang-format", + desc = [[clang-format is formatter for C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code]], + homepage = "https://pypi.org/project/clang-format/", + languages = { Pkg.Lang.C, Pkg.Lang["C++"], Pkg.Lang.Java, Pkg.Lang.JavaScript, Pkg.Lang.JSON, Pkg.Lang["C#"] }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "clang-format", bin = { "clang-format" } }, +} diff --git a/lua/mason-registry/index/clangd/init.lua b/lua/mason-registry/index/clangd/init.lua new file mode 100644 index 00000000..5e52c789 --- /dev/null +++ b/lua/mason-registry/index/clangd/init.lua @@ -0,0 +1,43 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "clangd", + desc = _.dedent [[ + clangd understands your C++ code and adds smart features to your editor: code completion, compile errors, + go-to-definition and more. + ]], + homepage = "https://clangd.llvm.org", + languages = { Pkg.Lang.C, Pkg.Lang["C++"] }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.unzip_release_file { + repo = "clangd/clangd", + asset_file = function(release) + local target = coalesce( + when(platform.is.mac, "clangd-mac-%s.zip"), + when(platform.is.linux_x64, "clangd-linux-%s.zip"), + when(platform.is.win_x64, "clangd-windows-%s.zip") + ) + return target and target:format(release) + end, + } + source.with_receipt() + ctx.fs:rename(("clangd_%s"):format(source.release), "clangd") + ctx:link_bin( + "clangd", + path.concat { + "clangd", + "bin", + platform.is.win and "clangd.exe" or "clangd", + } + ) + end, +} diff --git a/lua/mason-registry/index/clarity-lsp/init.lua b/lua/mason-registry/index/clarity-lsp/init.lua new file mode 100644 index 00000000..d919ad85 --- /dev/null +++ b/lua/mason-registry/index/clarity-lsp/init.lua @@ -0,0 +1,29 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "clarity-lsp", + desc = [[Language Server Protocol implementation for Clarity.]], + homepage = "https://github.com/hirosystems/clarity-lsp", + languages = { Pkg.Lang.Clarity }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "hirosystems/clarity-lsp", + asset_file = coalesce( + when(platform.is.mac, "clarity-lsp-macos-x64.zip"), + when(platform.is.linux_x64, "clarity-lsp-linux-x64.zip"), + when(platform.is.win_x64, "clarity-lsp-windows-x64.zip") + ), + }) + .with_receipt() + ctx:link_bin("clarity-lsp", platform.is.win and "clarity-lsp.exe" or "clarity-lsp") + end, +} diff --git a/lua/mason-registry/index/clojure-lsp/init.lua b/lua/mason-registry/index/clojure-lsp/init.lua new file mode 100644 index 00000000..81f59143 --- /dev/null +++ b/lua/mason-registry/index/clojure-lsp/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "clojure-lsp", + desc = [[A Language Server for Clojure(script). Taking a Cursive-like approach of statically analyzing code.]], + homepage = "https://clojure-lsp.io", + languages = { Pkg.Lang.Clojure, Pkg.Lang.ClojureScript }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "clojure-lsp/clojure-lsp", + asset_file = coalesce( + when(platform.is.mac_arm64, "clojure-lsp-native-macos-aarch64.zip"), + when(platform.is.mac_x64, "clojure-lsp-native-macos-amd64.zip"), + when(platform.is.linux_x64_musl, "clojure-lsp-native-static-linux-amd64.zip"), + when(platform.is.linux_x64_gnu, "clojure-lsp-native-linux-amd64.zip"), + when(platform.is.linux_arm64, "clojure-lsp-native-linux-aarch64.zip"), + when(platform.is.win_x64, "clojure-lsp-native-windows-amd64.zip") + ), + }) + .with_receipt() + std.chmod("+x", { "clojure-lsp" }) + ctx:link_bin("clojure-lsp", platform.is.win and "clojure-lsp.exe" or "clojure-lsp") + end, +} diff --git a/lua/mason-registry/index/cmake-language-server/init.lua b/lua/mason-registry/index/cmake-language-server/init.lua new file mode 100644 index 00000000..40290488 --- /dev/null +++ b/lua/mason-registry/index/cmake-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "cmake-language-server", + desc = [[CMake LSP Implementation]], + homepage = "https://github.com/regen100/cmake-language-server", + languages = { Pkg.Lang.CMake }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "cmake-language-server", bin = { "cmake-language-server" } }, +} diff --git a/lua/mason-registry/index/cmakelang/init.lua b/lua/mason-registry/index/cmakelang/init.lua new file mode 100644 index 00000000..9ecaffbf --- /dev/null +++ b/lua/mason-registry/index/cmakelang/init.lua @@ -0,0 +1,19 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "cmakelang", + desc = [[Language tools for cmake (format, lint, etc)]], + homepage = "https://pypi.org/project/cmakelang/", + languages = { Pkg.Lang.CMake }, + categories = { Pkg.Cat.Formatter, Pkg.Cat.Linter }, + install = pip3.packages { + "cmakelang", + bin = { + "cmake-annotate", + "cmake-format", + "cmake-lint", + "ctest-to", + }, + }, +} diff --git a/lua/mason-registry/index/codelldb/init.lua b/lua/mason-registry/index/codelldb/init.lua new file mode 100644 index 00000000..4cbdcf04 --- /dev/null +++ b/lua/mason-registry/index/codelldb/init.lua @@ -0,0 +1,41 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local path = require "mason-core.path" + +return Pkg.new { + name = "codelldb", + desc = [[A native debugger based on LLDB]], + homepage = "https://github.com/vadimcn/vscode-lldb", + languages = { Pkg.Lang.C, Pkg.Lang["C++"], Pkg.Lang.Rust }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "vadimcn/vscode-lldb", + asset_file = _.coalesce( + _.when(platform.is.mac_x64, "codelldb-x86_64-darwin.vsix"), + _.when(platform.is.mac_arm64, "codelldb-aarch64-darwin.vsix"), + _.when(platform.is.linux_x64_gnu, "codelldb-x86_64-linux.vsix"), + _.when(platform.is.linux_arm64_gnu, "codelldb-aarch64-linux.vsix"), + _.when(platform.is.linux_arm_gnu, "codelldb-arm-linux.vsix"), + _.when(platform.is.win_x64, "codelldb-x86_64-windows.vsix") + ), + }) + .with_receipt() + platform.when { + unix = function() + ctx:link_bin( + "codelldb", + ctx:write_exec_wrapper("codelldb", path.concat { "extension", "adapter", "codelldb" }) + ) + end, + win = function() + ctx:link_bin("codelldb", path.concat { "extension", "adapter", "codelldb.exe" }) + end, + } + end, +} diff --git a/lua/mason-registry/index/codeql/init.lua b/lua/mason-registry/index/codeql/init.lua new file mode 100644 index 00000000..a96567d1 --- /dev/null +++ b/lua/mason-registry/index/codeql/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "codeql", + desc = _.dedent [[ + Discover vulnerabilities across a codebase with CodeQL, our industry-leading semantic code analysis engine. + CodeQL lets you query code as though it were data. Write a query to find all variants of a vulnerability, + eradicating it forever. Then share your query to help others do the same. + ]], + homepage = "https://github.com/github/codeql-cli-binaries", + languages = { Pkg.Lang.CodeQL }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "github/codeql-cli-binaries", + asset_file = coalesce( + when(platform.is.mac, "codeql-osx64.zip"), + when(platform.is.linux_x64, "codeql-linux64.zip"), + when(platform.is.win_x64, "codeql-win64.zip") + ), + }) + .with_receipt() + ctx:link_bin("codeql", path.concat { "codeql", platform.is.win and "codeql.cmd" or "codeql" }) + end, +} diff --git a/lua/mason-registry/index/codespell/init.lua b/lua/mason-registry/index/codespell/init.lua new file mode 100644 index 00000000..73639783 --- /dev/null +++ b/lua/mason-registry/index/codespell/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "codespell", + desc = [[check code for common misspellings]], + homepage = "https://github.com/codespell-project/codespell", + languages = {}, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "codespell", bin = { "codespell" } }, +} diff --git a/lua/mason-registry/index/colorgen-nvim/init.lua b/lua/mason-registry/index/colorgen-nvim/init.lua new file mode 100644 index 00000000..d1d55c1f --- /dev/null +++ b/lua/mason-registry/index/colorgen-nvim/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "colorgen-nvim", + desc = [[Blazingly fast colorscheme generator for Neovim written in Rust]], + homepage = "https://github.com/ChristianChiarulli/colorgen-nvim", + languages = {}, + categories = { Pkg.Cat.Compiler }, + install = cargo.crate("colorgen-nvim", { + git = { + url = "https://github.com/ChristianChiarulli/colorgen-nvim", + tag = false, + }, + bin = { "colorgen-nvim" }, + }), +} diff --git a/lua/mason-registry/index/commitlint/init.lua b/lua/mason-registry/index/commitlint/init.lua new file mode 100644 index 00000000..02f23ccf --- /dev/null +++ b/lua/mason-registry/index/commitlint/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "commitlint", + desc = "commitlint checks if your commit messages meet the conventional commit format.", + homepage = "https://commitlint.js.org/", + languages = { Pkg.Lang.GitCommit }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { + "@commitlint/cli", + "@commitlint/config-conventional", + "commitlint-format-json", + bin = { "commitlint" }, + }, +} diff --git a/lua/mason-registry/index/cpplint/init.lua b/lua/mason-registry/index/cpplint/init.lua new file mode 100644 index 00000000..2b9eab14 --- /dev/null +++ b/lua/mason-registry/index/cpplint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "cpplint", + desc = [[Cpplint is a command-line tool to check C/C++ files for style issues following Google's C++ style guide]], + homepage = "https://pypi.org/project/cpplint/", + languages = { Pkg.Lang.C, Pkg.Lang["C++"] }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "cpplint", bin = { "cpplint" } }, +} diff --git a/lua/mason-registry/index/cpptools/init.lua b/lua/mason-registry/index/cpptools/init.lua new file mode 100644 index 00000000..86b6ecd6 --- /dev/null +++ b/lua/mason-registry/index/cpptools/init.lua @@ -0,0 +1,42 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local path = require "mason-core.path" + +return Pkg.new { + name = "cpptools", + desc = [[Official repository for the Microsoft C/C++ extension for VS Code.]], + homepage = "https://github.com/microsoft/vscode-cpptools", + languages = { Pkg.Lang.C, Pkg.Lang["C++"], Pkg.Lang.Rust }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "microsoft/vscode-cpptools", + asset_file = _.coalesce( + _.when(platform.is.mac_x64, "cpptools-osx.vsix"), + _.when(platform.is.mac_arm64, "cpptools-osx-arm64.vsix"), + _.when(platform.is.linux_x64, "cpptools-linux.vsix"), + _.when(platform.is.linux_arm64, "cpptools-linux-aarch64.vsix"), + _.when(platform.is.linux_arm, "cpptools-linux-armhf.vsix"), + _.when(platform.is.win_x64, "cpptools-win64.vsix"), + _.when(platform.is.win_arm64, "cpptools-win-arm64.vsix"), + _.when(platform.is.win_x86, "cpptools-win32.vsix") + ), + }) + .with_receipt() + + local debug_executable = path.concat { + "extension", + "debugAdapters", + "bin", + platform.is.win and "OpenDebugAD7.exe" or "OpenDebugAD7", + } + std.chmod("+x", debug_executable) + ctx:link_bin("OpenDebugAD7", debug_executable) + end, +} diff --git a/lua/mason-registry/index/crystalline/init.lua b/lua/mason-registry/index/crystalline/init.lua new file mode 100644 index 00000000..34128fdf --- /dev/null +++ b/lua/mason-registry/index/crystalline/init.lua @@ -0,0 +1,31 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "crystalline", + desc = [[A Language Server Protocol implementation for Crystal. 🔮]], + homepage = "https://github.com/elbywan/crystalline", + languages = { Pkg.Lang.Crystal }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .gunzip_release_file({ + repo = "elbywan/crystalline", + asset_file = coalesce( + when(platform.is.mac_x64, "crystalline_x86_64-apple-darwin.gz"), + when(platform.is.linux_x64, "crystalline_x86_64-unknown-linux-musl.gz") + ), + out_file = "crystalline", + }) + .with_receipt() + std.chmod("+x", { "crystalline" }) + ctx:link_bin("crystalline", "crystalline") + end, +} diff --git a/lua/mason-registry/index/csharp-language-server/init.lua b/lua/mason-registry/index/csharp-language-server/init.lua new file mode 100644 index 00000000..34093a9f --- /dev/null +++ b/lua/mason-registry/index/csharp-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local dotnet = require "mason-core.managers.dotnet" + +return Pkg.new { + name = "csharp-language-server", + desc = [[Roslyn-based LSP language server for C#]], + homepage = "https://github.com/razzmatazz/csharp-language-server", + languages = { Pkg.Lang["C#"] }, + categories = { Pkg.Cat.LSP }, + install = dotnet.package("csharp-ls", { bin = { "csharp-ls" } }), +} diff --git a/lua/mason-registry/index/csharpier/init.lua b/lua/mason-registry/index/csharpier/init.lua new file mode 100644 index 00000000..d3600eb3 --- /dev/null +++ b/lua/mason-registry/index/csharpier/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local dotnet = require "mason-core.managers.dotnet" + +return Pkg.new { + name = "csharpier", + desc = [[CSharpier is an opinionated code formatter for c#]], + homepage = "https://csharpier.com", + languages = { Pkg.Lang["C#"] }, + categories = { Pkg.Cat.Formatter }, + install = dotnet.package("csharpier", { bin = { "dotnet-csharpier" } }), +} diff --git a/lua/mason-registry/index/cspell/init.lua b/lua/mason-registry/index/cspell/init.lua new file mode 100644 index 00000000..9c3a9ce7 --- /dev/null +++ b/lua/mason-registry/index/cspell/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "cspell", + desc = [[A Spell Checker for Code]], + homepage = "https://github.com/streetsidesoftware/cspell", + languages = {}, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "cspell", bin = { "cspell" } }, +} diff --git a/lua/mason-registry/index/css-lsp/init.lua b/lua/mason-registry/index/css-lsp/init.lua new file mode 100644 index 00000000..be94b476 --- /dev/null +++ b/lua/mason-registry/index/css-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "css-lsp", + desc = [[Language Server Protocol implementation for CSS, SCSS & LESS.]], + homepage = "https://github.com/microsoft/vscode-css-languageservice", + languages = { Pkg.Lang.CSS, Pkg.Lang.SCSS, Pkg.Lang.LESS }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "vscode-langservers-extracted", bin = { "vscode-css-language-server" } }, +} diff --git a/lua/mason-registry/index/cssmodules-language-server/init.lua b/lua/mason-registry/index/cssmodules-language-server/init.lua new file mode 100644 index 00000000..98527d69 --- /dev/null +++ b/lua/mason-registry/index/cssmodules-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "cssmodules-language-server", + desc = [[autocompletion and go-to-definition for cssmodules]], + homepage = "https://github.com/antonk52/cssmodules-language-server", + languages = { Pkg.Lang.CSS }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "cssmodules-language-server", bin = { "cssmodules-language-server" } }, +} diff --git a/lua/mason-registry/index/cucumber-language-server/init.lua b/lua/mason-registry/index/cucumber-language-server/init.lua new file mode 100644 index 00000000..8e4c8434 --- /dev/null +++ b/lua/mason-registry/index/cucumber-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "cucumber-language-server", + desc = [[Cucumber Language Server]], + homepage = "https://github.com/cucumber/language-server", + languages = { Pkg.Lang.Cucumber }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@cucumber/language-server", bin = { "cucumber-language-server" } }, +} diff --git a/lua/mason-registry/index/cueimports/init.lua b/lua/mason-registry/index/cueimports/init.lua new file mode 100644 index 00000000..a6a345f4 --- /dev/null +++ b/lua/mason-registry/index/cueimports/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "cueimports", + desc = [[CUE tool that updates your import lines, adding missing ones and removing unused ones.]], + homepage = "https://github.com/asdine/cueimports", + languages = { Pkg.Lang.Cue }, + categories = { Pkg.Cat.Formatter }, + install = go.packages { "github.com/asdine/cueimports/cmd/cueimports", bin = { "cueimports" } }, +} diff --git a/lua/mason-registry/index/cuelsp/init.lua b/lua/mason-registry/index/cuelsp/init.lua new file mode 100644 index 00000000..db4b42ff --- /dev/null +++ b/lua/mason-registry/index/cuelsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "cuelsp", + desc = [[Language Server implementation for CUE, with built-in support for Dagger.]], + homepage = "https://github.com/dagger/cuelsp", + languages = { Pkg.Lang.Cue }, + categories = { Pkg.Cat.LSP }, + install = go.packages { "github.com/dagger/cuelsp/cmd/cuelsp", bin = { "cuelsp" } }, +} diff --git a/lua/mason-registry/index/curlylint/init.lua b/lua/mason-registry/index/curlylint/init.lua new file mode 100644 index 00000000..074a3ae9 --- /dev/null +++ b/lua/mason-registry/index/curlylint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "curlylint", + desc = [[Experimental HTML templates linting for Jinja, Nunjucks, Django templates, Twig, Liquid]], + homepage = "https://www.curlylint.org/", + languages = { Pkg.Lang.Django, Pkg.Lang.Jinja, Pkg.Lang.Nunjucks, Pkg.Lang.Twig, Pkg.Lang.Liquid }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "curlylint", bin = { "curlylint" } }, +} diff --git a/lua/mason-registry/index/dart-debug-adapter/init.lua b/lua/mason-registry/index/dart-debug-adapter/init.lua new file mode 100644 index 00000000..402a82cc --- /dev/null +++ b/lua/mason-registry/index/dart-debug-adapter/init.lua @@ -0,0 +1,27 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local path = require "mason-core.path" + +return Pkg.new { + name = "dart-debug-adapter", + desc = [[Dart debug adapter sourced from the Dart VSCode extension.]], + homepage = "https://github.com/Dart-Code/Dart-Code", + languages = { Pkg.Lang.Dart }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "Dart-Code/Dart-Code", + asset_file = _.compose(_.format "dart-code-%s.vsix", _.gsub("^v", "")), + }) + .with_receipt() + ctx.fs:rmrf(path.concat { "extension", "media" }) + ctx:link_bin( + "dart-debug-adapter", + ctx:write_node_exec_wrapper("dart-debug-adapter", path.concat { "extension", "out", "dist", "debug.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/debugpy/init.lua b/lua/mason-registry/index/debugpy/init.lua new file mode 100644 index 00000000..51587a8a --- /dev/null +++ b/lua/mason-registry/index/debugpy/init.lua @@ -0,0 +1,18 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local path = require "mason-core.path" + +return Pkg.new { + name = "debugpy", + desc = [[An implementation of the Debug Adapter Protocol for Python]], + homepage = "https://github.com/microsoft/debugpy", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + pip3.install({ "debugpy" }).with_receipt() + ctx:link_bin("debugpy", ctx:write_pyvenv_exec_wrapper("debugpy", "debugpy")) + ctx:link_bin("debugpy-adapter", ctx:write_pyvenv_exec_wrapper("debugpy-adapter", "debugpy.adapter")) + end, +} diff --git a/lua/mason-registry/index/delve/init.lua b/lua/mason-registry/index/delve/init.lua new file mode 100644 index 00000000..a0e3e121 --- /dev/null +++ b/lua/mason-registry/index/delve/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "delve", + desc = [[Delve is a debugger for the Go programming language.]], + homepage = "https://github.com/go-delve/delve", + languages = { Pkg.Lang.Go }, + categories = { Pkg.Cat.DAP }, + install = go.packages { "github.com/go-delve/delve/cmd/dlv", bin = { "dlv" } }, +} diff --git a/lua/mason-registry/index/deno/init.lua b/lua/mason-registry/index/deno/init.lua new file mode 100644 index 00000000..cf9d5e34 --- /dev/null +++ b/lua/mason-registry/index/deno/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "deno", + desc = _.dedent [[ + Deno (/ˈdiːnoʊ/, pronounced dee-no) is a JavaScript, TypeScript, and WebAssembly runtime with secure defaults + and a great developer experience. + ]], + homepage = "https://deno.land/manual/language_server/overview", + languages = { Pkg.Lang.JavaScript, Pkg.Lang.TypeScript }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Runtime }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "denoland/deno", + asset_file = coalesce( + when(platform.is.mac_arm64, "deno-aarch64-apple-darwin.zip"), + when(platform.is.mac_x64, "deno-x86_64-apple-darwin.zip"), + when(platform.is.linux_x64, "deno-x86_64-unknown-linux-gnu.zip"), + when(platform.is.win_x64, "deno-x86_64-pc-windows-msvc.zip") + ), + }) + .with_receipt() + ctx:link_bin("deno", platform.is.win and "deno.exe" or "deno") + end, +} diff --git a/lua/mason-registry/index/dhall-lsp/init.lua b/lua/mason-registry/index/dhall-lsp/init.lua new file mode 100644 index 00000000..6e69d68d --- /dev/null +++ b/lua/mason-registry/index/dhall-lsp/init.lua @@ -0,0 +1,75 @@ +local Pkg = require "mason-core.package" +local path = require "mason-core.path" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local std = require "mason-core.managers.std" +local github_client = require "mason-core.managers.github.client" +local Optional = require "mason-core.optional" +local Result = require "mason-core.result" + +return Pkg.new { + name = "dhall-lsp", + desc = [[LSP server implementation for Dhall.]], + homepage = "https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server", + languages = { Pkg.Lang.Dhall }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local asset_name_pattern = assert( + _.coalesce( + _.when(platform.is.mac, "dhall%-lsp%-server%-.+%-x86_64%-[mM]acos.tar.bz2"), + _.when(platform.is.linux_x64, "dhall%-lsp%-server%-.+%-x86_64%-[lL]inux.tar.bz2"), + _.when(platform.is.win_x64, "dhall%-lsp%-server%-.+%-x86_64%-[wW]indows.zip") + ), + "Current platform is not supported." + ) + local find_lsp_server_asset = + _.compose(_.find_first(_.prop_satisfies(_.matches(asset_name_pattern), "name")), _.prop "assets") + + local repo = "dhall-lang/dhall-haskell" + ---@type GitHubRelease + local release = ctx.requested_version + :map(function(version) + return github_client.fetch_release(repo, version):and_then( + _.if_else( + find_lsp_server_asset, + Result.success, + _.always(Result.failure "Unable to find asset file in GitHub release.") + ) + ) + end) + :or_else_get(function() + return github_client.fetch_releases(repo):and_then(function(releases) + return Optional.of_nilable(_.find_first(find_lsp_server_asset, releases)) + :ok_or "Unable to find GitHub release." + end) + end) + :get_or_throw "Unable to find GitHub release." + + local asset = find_lsp_server_asset(release) + + platform.when { + win = function() + std.download_file(asset.browser_download_url, "dhall-lsp-server.zip") + std.unzip("dhall-lsp-server.zip", ".") + end, + unix = function() + std.download_file(asset.browser_download_url, "dhall-lsp-server.tar.bz2") + std.untar "dhall-lsp-server.tar.bz2" + std.chmod("+x", { path.concat { "bin", "dhall-lsp-server" } }) + end, + } + ctx.receipt:with_primary_source { + type = "github_release_file", + repo = repo, + file = asset.browser_download_url, + release = release.tag_name, + } + + ctx:link_bin( + "dhall-lsp-server", + path.concat { "bin", platform.is.win and "dhall-lsp-server.exe" or "dhall-lsp-server" } + ) + end, +} diff --git a/lua/mason-registry/index/diagnostic-languageserver/init.lua b/lua/mason-registry/index/diagnostic-languageserver/init.lua new file mode 100644 index 00000000..f05775bc --- /dev/null +++ b/lua/mason-registry/index/diagnostic-languageserver/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "diagnostic-languageserver", + desc = [[Diagnostic language server that integrates with linters.]], + homepage = "https://github.com/iamcco/diagnostic-languageserver", + languages = {}, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "diagnostic-languageserver", bin = { "diagnostic-languageserver" } }, +} diff --git a/lua/mason-registry/index/djlint/init.lua b/lua/mason-registry/index/djlint/init.lua new file mode 100644 index 00000000..1a1d4aee --- /dev/null +++ b/lua/mason-registry/index/djlint/init.lua @@ -0,0 +1,19 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "djlint", + desc = [[HTML Template Linter and Formatter. Django - Jinja - Nunjucks - Handlebars - GoLang]], + homepage = "https://github.com/Riverside-Healthcare/djLint", + languages = { + Pkg.Lang.Django, + Pkg.Lang.Go, + Pkg.Lang.Nunjucks, + Pkg.Lang.Handlebargs, + Pkg.Lang.Mustache, + Pkg.Lang.Angular, + Pkg.Lang.Jinja, + }, + categories = { Pkg.Cat.Formatter, Pkg.Cat.Linter }, + install = pip3.packages { "djlint", bin = { "djlint" } }, +} diff --git a/lua/mason-registry/index/docker-compose-language-service/init.lua b/lua/mason-registry/index/docker-compose-language-service/init.lua new file mode 100644 index 00000000..aa97aa48 --- /dev/null +++ b/lua/mason-registry/index/docker-compose-language-service/init.lua @@ -0,0 +1,12 @@ +local Pkg = require "mason-core.package" +local path = require "mason-core.path" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "docker-compose-language-service", + desc = [[A language server for Docker Compose.]], + homepage = "https://github.com/microsoft/compose-language-service", + languages = { Pkg.Lang.Docker }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@microsoft/compose-language-service", bin = { "docker-compose-langserver" } }, +} diff --git a/lua/mason-registry/index/dockerfile-language-server/init.lua b/lua/mason-registry/index/dockerfile-language-server/init.lua new file mode 100644 index 00000000..e1eb6df1 --- /dev/null +++ b/lua/mason-registry/index/dockerfile-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "dockerfile-language-server", + desc = [[A language server for Dockerfiles powered by Node.js, TypeScript, and VSCode technologies.]], + homepage = "https://github.com/rcjsuen/dockerfile-language-server-nodejs", + languages = { Pkg.Lang.Docker }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "dockerfile-language-server-nodejs", bin = { "docker-langserver" } }, +} diff --git a/lua/mason-registry/index/dot-language-server/init.lua b/lua/mason-registry/index/dot-language-server/init.lua new file mode 100644 index 00000000..6d51d3d8 --- /dev/null +++ b/lua/mason-registry/index/dot-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "dot-language-server", + desc = [[A language server for the DOT language]], + homepage = "https://github.com/nikeee/dot-language-server", + languages = { Pkg.Lang.DOT }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "dot-language-server", bin = { "dot-language-server" } }, +} diff --git a/lua/mason-registry/index/dprint/init.lua b/lua/mason-registry/index/dprint/init.lua new file mode 100644 index 00000000..60c95053 --- /dev/null +++ b/lua/mason-registry/index/dprint/init.lua @@ -0,0 +1,32 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "dprint", + desc = [[A pluggable and configurable code formatting platform written in Rust.]], + homepage = "https://dprint.dev/", + languages = {}, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "dprint/dprint", + asset_file = _.coalesce( + _.when(platform.is.mac_arm64, "dprint-aarch64-apple-darwin.zip"), + _.when(platform.is.mac_x64, "dprint-x86_64-apple-darwin.zip"), + _.when(platform.is.linux_arm64_gnu, "dprint-aarch64-unknown-linux-gnu.zip"), + _.when(platform.is.linux_x64_gnu, "dprint-x86_64-unknown-linux-gnu.zip"), + _.when(platform.is.linux_x64, "dprint-x86_64-unknown-linux-musl.zip"), + _.when(platform.is.win_x64, "dprint-x86_64-pc-windows-msvc.zip") + ), + }) + .with_receipt() + std.chmod("+x", { "dprint" }) + ctx:link_bin("dprint", platform.is.win and "dprint.exe" or "dprint") + end, +} diff --git a/lua/mason-registry/index/drools-lsp/init.lua b/lua/mason-registry/index/drools-lsp/init.lua new file mode 100644 index 00000000..5573d97d --- /dev/null +++ b/lua/mason-registry/index/drools-lsp/init.lua @@ -0,0 +1,23 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "drools-lsp", + desc = [[An implementation of a language server for the Drools Rule Language.]], + homepage = "https://github.com/kiegroup/drools-lsp", + languages = { Pkg.Lang.Drools }, + categories = { Pkg.Cat.LSP }, + ---@async + install = function() + local jar = "drools-lsp-server-jar-with-dependencies.jar" + github + .download_release_file({ + repo = "kiegroup/drools-lsp", + version = Optional.of "latest", + asset_file = jar, + out_file = jar, + }) + .with_receipt() + end, +} diff --git a/lua/mason-registry/index/editorconfig-checker/init.lua b/lua/mason-registry/index/editorconfig-checker/init.lua new file mode 100644 index 00000000..486c832e --- /dev/null +++ b/lua/mason-registry/index/editorconfig-checker/init.lua @@ -0,0 +1,35 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "editorconfig-checker", + desc = [[A tool to verify that your files are in harmony with your `.editorconfig`.]], + homepage = "https://github.com/editorconfig-checker/editorconfig-checker", + languages = {}, + categories = { Pkg.Cat.Linter }, + install = function(ctx) + local source = github.untargz_release_file { + repo = "editorconfig-checker/editorconfig-checker", + asset_file = coalesce( + when(platform.is.mac_arm64, "ec-darwin-arm64.tar.gz"), + when(platform.is.mac_x64, "ec-darwin-amd64.tar.gz"), + when(platform.is.linux_x64_openbsd, "ec-openbsd-amd64.tar.gz"), + when(platform.is.linux_arm64_openbsd, "ec-openbsd-arm64.tar.gz"), + when(platform.is.linux_arm64, "ec-linux-arm64.tar.gz"), + when(platform.is.linux_x64, "ec-linux-amd64.tar.gz"), + when(platform.is.win_x86, "ec-windows-386.exe.tar.gz"), + when(platform.is.win_x64, "ec-windows-amd64.exe.tar.gz"), + when(platform.is.win_arm64, "ec-windows-arm64.exe.tar.gz"), + when(platform.is.win_arm, "ec-windows-arm.exe.tar.gz") + ), + } + source.with_receipt() + local prog = source.asset_file:gsub("%.tar%.gz$", "") + ctx:link_bin("editorconfig-checker", path.concat { "bin", prog }) + end, +} diff --git a/lua/mason-registry/index/efm/init.lua b/lua/mason-registry/index/efm/init.lua new file mode 100644 index 00000000..30891f79 --- /dev/null +++ b/lua/mason-registry/index/efm/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "efm", + desc = [[General purpose Language Server]], + homepage = "https://github.com/mattn/efm-langserver", + languages = {}, + categories = { Pkg.Cat.LSP }, + install = go.packages { "github.com/mattn/efm-langserver", bin = { "efm-langserver" } }, +} diff --git a/lua/mason-registry/index/elixir-ls/init.lua b/lua/mason-registry/index/elixir-ls/init.lua new file mode 100644 index 00000000..b84b9032 --- /dev/null +++ b/lua/mason-registry/index/elixir-ls/init.lua @@ -0,0 +1,28 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "elixir-ls", + desc = _.dedent [[ + A frontend-independent IDE "smartness" server for Elixir. Implements the "Language Server Protocol" standard and + provides debugger support via the "Debug Adapter Protocol". + ]], + homepage = "https://github.com/elixir-lsp/elixir-ls", + languages = { Pkg.Lang.Elixir }, + categories = { Pkg.Cat.LSP, Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "elixir-lsp/elixir-ls", + asset_file = "elixir-ls.zip", + }) + .with_receipt() + + ctx:link_bin("elixir-ls", platform.is.win and "language_server.bat" or "language_server.sh") + ctx:link_bin("elixir-ls-debugger", platform.is.win and "debugger.bat" or "debugger.sh") + end, +} diff --git a/lua/mason-registry/index/elm-format/init.lua b/lua/mason-registry/index/elm-format/init.lua new file mode 100644 index 00000000..00028b35 --- /dev/null +++ b/lua/mason-registry/index/elm-format/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "elm-format", + desc = [[elm-format formats Elm source code according to a standard set of rules based on the official Elm Style Guide]], + homepage = "https://github.com/avh4/elm-format", + languages = { Pkg.Lang.Elm }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "elm-format", bin = { "elm-format" } }, +} diff --git a/lua/mason-registry/index/elm-language-server/init.lua b/lua/mason-registry/index/elm-language-server/init.lua new file mode 100644 index 00000000..279a0649 --- /dev/null +++ b/lua/mason-registry/index/elm-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "elm-language-server", + desc = [[Language server implementation for Elm]], + homepage = "https://github.com/elm-tooling/elm-language-server", + languages = { Pkg.Lang.Elm }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@elm-tooling/elm-language-server", bin = { "elm-language-server" } }, +} diff --git a/lua/mason-registry/index/ember-language-server/init.lua b/lua/mason-registry/index/ember-language-server/init.lua new file mode 100644 index 00000000..b22b2292 --- /dev/null +++ b/lua/mason-registry/index/ember-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "ember-language-server", + desc = [[Language Server Protocol implementation for Ember.js and Glimmer projects]], + homepage = "https://github.com/lifeart/ember-language-server", + languages = { Pkg.Lang.Ember }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@lifeart/ember-language-server", bin = { "ember-language-server" } }, +} diff --git a/lua/mason-registry/index/emmet-ls/init.lua b/lua/mason-registry/index/emmet-ls/init.lua new file mode 100644 index 00000000..dbc766ee --- /dev/null +++ b/lua/mason-registry/index/emmet-ls/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "emmet-ls", + desc = [[Emmet support based on LSP.]], + homepage = "https://github.com/aca/emmet-ls", + languages = { Pkg.Lang.Emmet }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "emmet-ls", bin = { "emmet-ls" } }, +} diff --git a/lua/mason-registry/index/erb-lint/init.lua b/lua/mason-registry/index/erb-lint/init.lua new file mode 100644 index 00000000..358a124b --- /dev/null +++ b/lua/mason-registry/index/erb-lint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" + +return Pkg.new { + name = "erb-lint", + desc = [[erb-lint is a tool to help lint your ERB or HTML files using the included linters or by writing your own]], + homepage = "https://github.com/Shopify/erb-lint", + languages = { Pkg.Lang.HTML, Pkg.Lang.Ruby }, + categories = { Pkg.Cat.Linter }, + install = gem.packages { "erb_lint", bin = { "erblint" } }, +} diff --git a/lua/mason-registry/index/erg-language-server/init.lua b/lua/mason-registry/index/erg-language-server/init.lua new file mode 100644 index 00000000..4bbae8a0 --- /dev/null +++ b/lua/mason-registry/index/erg-language-server/init.lua @@ -0,0 +1,45 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "erg-language-server", + desc = [[ELS is a language server for the Erg programing language.]], + homepage = "https://github.com/erg-lang/erg-language-server", + languages = { Pkg.Lang.Erg }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "erg-lang/erg-language-server" + local asset_file = _.coalesce( + _.when(platform.is.mac_x64, "els-x86_64-apple-darwin.tar.gz"), + _.when(platform.is.mac_arm64, "els-aarch64-apple-darwin.tar.gz"), + _.when(platform.is.linux_arm64_gnu, "els-aarch64-unknown-linux-gnu.tar.gz"), + _.when(platform.is.linux_x64_gnu, "els-x86_64-unknown-linux-gnu.tar.gz"), + _.when(platform.is.linux_x64, "els-x86_64-unknown-linux-musl.tar.gz"), + _.when(platform.is.win_x64, "els-x86_64-pc-windows-msvc.zip") + ) + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + asset_file = asset_file, + }) + .with_receipt() + ctx:link_bin("els", "els") + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = asset_file, + }) + .with_receipt() + ctx:link_bin("els", "els.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/erg/init.lua b/lua/mason-registry/index/erg/init.lua new file mode 100644 index 00000000..d0b8b50b --- /dev/null +++ b/lua/mason-registry/index/erg/init.lua @@ -0,0 +1,43 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "erg", + desc = [[A statically typed language that can deeply improve the Python ecosystem.]], + homepage = "https://github.com/erg-lang/erg", + languages = { Pkg.Lang.Erg }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Compiler }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "erg-lang/erg" + local asset_file = _.coalesce( + _.when(platform.is.mac_x64, "erg-x86_64-apple-darwin.tar.gz"), + _.when(platform.is.mac_arm64, "erg-aarch64-apple-darwin.tar.gz"), + _.when(platform.is.linux_x64_gnu, "erg-x86_64-unknown-linux-gnu.tar.gz"), + _.when(platform.is.win_x64, "erg-x86_64-pc-windows-msvc.zip") + ) + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + asset_file = asset_file, + }) + .with_receipt() + ctx:link_bin("erg", "erg") + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = asset_file, + }) + .with_receipt() + ctx:link_bin("erg", "erg.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/erlang-ls/init.lua b/lua/mason-registry/index/erlang-ls/init.lua new file mode 100644 index 00000000..839f5987 --- /dev/null +++ b/lua/mason-registry/index/erlang-ls/init.lua @@ -0,0 +1,40 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local std = require "mason-core.managers.std" +local git = require "mason-core.managers.git" +local github = require "mason-core.managers.github" +local Optional = require "mason-core.optional" +local path = require "mason-core.path" + +local rebar3 = platform.is.win and "rebar3.cmd" or "rebar3" + +return Pkg.new { + name = "erlang-ls", + desc = _.dedent [[ + Implementing features such as auto-complete or go-to-definition for a programming language is not trivial. + Traditionally, this work had to be repeated for each development tool and it required a mix of expertise in both + the targeted programming language and the programming language internally used by the development tool of + choice. + ]], + languages = { Pkg.Lang.Erlang }, + categories = { Pkg.Cat.LSP }, + homepage = "https://erlang-ls.github.io/", + ---@async + ---@param ctx InstallContext + install = function(ctx) + std.ensure_executable(rebar3, { help_url = "http://rebar3.org/docs/" }) + + local repo = "erlang-ls/erlang_ls" + local source = github.tag { repo = repo } + source.with_receipt() + git.clone { ("https://github.com/%s.git"):format(repo), version = Optional.of(source.tag) } + + ctx.spawn[rebar3] { "escriptize" } + ctx.spawn[rebar3] { "as", "dap", "escriptize" } + ctx:link_bin( + "erlang_ls", + path.concat { "_build", "default", "bin", platform.is.win and "erlang_ls.bat" or "erlang_ls" } + ) + end, +} diff --git a/lua/mason-registry/index/esbonio/init.lua b/lua/mason-registry/index/esbonio/init.lua new file mode 100644 index 00000000..9b607180 --- /dev/null +++ b/lua/mason-registry/index/esbonio/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "esbonio", + desc = [[A Language Server for Sphinx projects.]], + homepage = "https://pypi.org/project/esbonio/", + languages = { Pkg.Lang.Sphinx }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "esbonio", bin = { "esbonio" } }, +} diff --git a/lua/mason-registry/index/eslint-lsp/init.lua b/lua/mason-registry/index/eslint-lsp/init.lua new file mode 100644 index 00000000..6c9f57d7 --- /dev/null +++ b/lua/mason-registry/index/eslint-lsp/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "eslint-lsp", + desc = _.dedent [[ + Language Server Protocol implementation for ESLint. The server uses the ESLint library installed in the opened + workspace folder. If the folder doesn't provide one the extension looks for a global install version. + ]], + homepage = "https://github.com/Microsoft/vscode-eslint", + languages = { Pkg.Lang.JavaScript, Pkg.Lang.TypeScript }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "vscode-langservers-extracted", bin = { "vscode-eslint-language-server" } }, +} diff --git a/lua/mason-registry/index/eslint_d/init.lua b/lua/mason-registry/index/eslint_d/init.lua new file mode 100644 index 00000000..2cdaee06 --- /dev/null +++ b/lua/mason-registry/index/eslint_d/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "eslint_d", + desc = [[Makes eslint the fastest linter on the planet]], + homepage = "https://github.com/mantoni/eslint_d.js/", + languages = { Pkg.Lang.TypeScript, Pkg.Lang.JavaScript }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "eslint_d", bin = { "eslint_d" } }, +} diff --git a/lua/mason-registry/index/fantomas/init.lua b/lua/mason-registry/index/fantomas/init.lua new file mode 100644 index 00000000..98fc8671 --- /dev/null +++ b/lua/mason-registry/index/fantomas/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local dotnet = require "mason-core.managers.dotnet" + +return Pkg.new { + name = "fantomas", + desc = [[Fantomas is an opinionated code formatter for f#]], + homepage = "https://fsprojects.github.io/fantomas", + languages = { Pkg.Lang["F#"] }, + categories = { Pkg.Cat.Formatter }, + install = dotnet.package("fantomas", { bin = { "fantomas" } }), +} diff --git a/lua/mason-registry/index/fennel-language-server/init.lua b/lua/mason-registry/index/fennel-language-server/init.lua new file mode 100644 index 00000000..85af5495 --- /dev/null +++ b/lua/mason-registry/index/fennel-language-server/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +local github_repo = "https://github.com/rydesun/fennel-language-server" +return Pkg.new { + name = "fennel-language-server", + desc = [[Fennel language server protocol (LSP) support. ]], + homepage = github_repo, + languages = { Pkg.Lang.Fennel }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("fennel-language-server", { + git = { + url = github_repo, + }, + bin = { "fennel-language-server" }, + }), +} diff --git a/lua/mason-registry/index/firefox-debug-adapter/init.lua b/lua/mason-registry/index/firefox-debug-adapter/init.lua new file mode 100644 index 00000000..8606f1bf --- /dev/null +++ b/lua/mason-registry/index/firefox-debug-adapter/init.lua @@ -0,0 +1,28 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local git = require "mason-core.managers.git" +local _ = require "mason-core.functional" +local path = require "mason-core.path" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "firefox-debug-adapter", + desc = [[Debug your web application or browser extension in Firefox]], + homepage = "https://github.com/firefox-devtools/vscode-firefox-debug", + languages = { Pkg.Lang.JavaScript, Pkg.Lang.TypeScript }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.tag { repo = "firefox-devtools/vscode-firefox-debug" } + source.with_receipt() + git.clone { "https://github.com/firefox-devtools/vscode-firefox-debug", version = Optional.of(source.tag) } + ctx.spawn.npm { "install" } + ctx.spawn.npm { "run", "build" } + ctx.spawn.npm { "install", "--production" } + ctx:link_bin( + "firefox-debug-adapter", + ctx:write_node_exec_wrapper("firefox-debug-adapter", path.concat { "dist", "adapter.bundle.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/fixjson/init.lua b/lua/mason-registry/index/fixjson/init.lua new file mode 100644 index 00000000..99642410 --- /dev/null +++ b/lua/mason-registry/index/fixjson/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "fixjson", + desc = [[A JSON file fixer/formatter for humans using (relaxed) JSON5]], + homepage = "https://github.com/rhysd/fixjson", + languages = { + Pkg.Lang.JSON, + }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "fixjson", bin = { "fixjson" } }, +} diff --git a/lua/mason-registry/index/flake8/init.lua b/lua/mason-registry/index/flake8/init.lua new file mode 100644 index 00000000..afc1fd86 --- /dev/null +++ b/lua/mason-registry/index/flake8/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "flake8", + desc = _.dedent [[ + flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the + style and quality of some python code. + ]], + homepage = "https://github.com/PyCQA/flake8", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "flake8", bin = { "flake8" } }, +} diff --git a/lua/mason-registry/index/flux-lsp/init.lua b/lua/mason-registry/index/flux-lsp/init.lua new file mode 100644 index 00000000..afef8c72 --- /dev/null +++ b/lua/mason-registry/index/flux-lsp/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "flux-lsp", + desc = [[Implementation of Language Server Protocol for the Flux language]], + homepage = "https://github.com/influxdata/flux-lsp", + languages = { Pkg.Lang.Flux }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("flux-lsp", { + git = { + url = "https://github.com/influxdata/flux-lsp", + tag = true, + }, + bin = { "flux-lsp" }, + }), +} diff --git a/lua/mason-registry/index/foam-language-server/init.lua b/lua/mason-registry/index/foam-language-server/init.lua new file mode 100644 index 00000000..e1b0c95b --- /dev/null +++ b/lua/mason-registry/index/foam-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "foam-language-server", + desc = [[A language server for OpenFOAM case files]], + homepage = "https://github.com/FoamScience/foam-language-server", + languages = { Pkg.Lang.OpenFOAM }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "foam-language-server", bin = { "foam-ls" } }, +} diff --git a/lua/mason-registry/index/fortls/init.lua b/lua/mason-registry/index/fortls/init.lua new file mode 100644 index 00000000..5d9f605c --- /dev/null +++ b/lua/mason-registry/index/fortls/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "fortls", + desc = [[fortls - Fortran Language Server]], + homepage = "https://github.com/gnikit/fortls", + languages = { Pkg.Lang.Fortran }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "fortls", bin = { "fortls" } }, +} diff --git a/lua/mason-registry/index/fourmolu/init.lua b/lua/mason-registry/index/fourmolu/init.lua new file mode 100644 index 00000000..f6849474 --- /dev/null +++ b/lua/mason-registry/index/fourmolu/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local std = require "mason-core.managers.std" + +return Pkg.new { + name = "fourmolu", + desc = [[A fork of Ormolu that uses four space indentation and allows arbitrary configuration.]], + homepage = "https://hackage.haskell.org/package/fourmolu", + languages = { Pkg.Lang.Haskell }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + ---@param template string + local function release_file(template_string) + return _.compose(_.format(template_string), _.gsub("^v", "")) + end + + github + .download_release_file({ + repo = "fourmolu/fourmolu", + out_file = "fourmolu", + asset_file = _.coalesce( + _.when(platform.is.mac_x64, release_file "fourmolu-%s-osx-x86_64"), + _.when(platform.is.linux_x64_gnu, release_file "fourmolu-%s-linux-x86_64") + ), + }) + .with_receipt() + std.chmod("+x", { "fourmolu" }) + ctx:link_bin("fourmolu", "fourmolu") + end, +} diff --git a/lua/mason-registry/index/fsautocomplete/init.lua b/lua/mason-registry/index/fsautocomplete/init.lua new file mode 100644 index 00000000..52e456a7 --- /dev/null +++ b/lua/mason-registry/index/fsautocomplete/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local dotnet = require "mason-core.managers.dotnet" + +return Pkg.new { + name = "fsautocomplete", + desc = [[F# language server using Language Server Protocol]], + languages = { Pkg.Lang["F#"] }, + categories = { Pkg.Cat.LSP }, + homepage = "https://github.com/fsharp/FsAutoComplete", + install = dotnet.package("fsautocomplete", { + bin = { "fsautocomplete" }, + }), +} diff --git a/lua/mason-registry/index/gersemi/init.lua b/lua/mason-registry/index/gersemi/init.lua new file mode 100644 index 00000000..bed8c410 --- /dev/null +++ b/lua/mason-registry/index/gersemi/init.lua @@ -0,0 +1,16 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "gersemi", + desc = [[gersemi - A formatter to make your CMake code the real treasure.]], + homepage = "https://github.com/BlankSpruce/gersemi", + languages = { Pkg.Lang.CMake }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { + "gersemi", + bin = { + "gersemi", + }, + }, +} diff --git a/lua/mason-registry/index/gitlint/init.lua b/lua/mason-registry/index/gitlint/init.lua new file mode 100644 index 00000000..e8f85a6b --- /dev/null +++ b/lua/mason-registry/index/gitlint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "gitlint", + desc = [[Gitlint is a git commit message linter written in python: it checks your commit messages for style.]], + homepage = "https://jorisroovers.com/gitlint/", + languages = { Pkg.Lang.GitCommit }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "gitlint", bin = { "gitlint" } }, +} diff --git a/lua/mason-registry/index/gitui/init.lua b/lua/mason-registry/index/gitui/init.lua new file mode 100644 index 00000000..18f18f9f --- /dev/null +++ b/lua/mason-registry/index/gitui/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "gitui", + desc = [[Blazing fast terminal-ui for git written in Rust]], + homepage = "https://github.com/extrawurst/gitui", + languages = {}, + categories = {}, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .untargz_release_file({ + repo = "extrawurst/gitui", + out_file = "gitui", + asset_file = coalesce( + when(platform.is.mac, "gitui-mac.tar.gz"), + when(platform.is.linux_x64, "gitui-linux-musl.tar.gz"), + when(platform.is.linux_arm64, "gitui-linux-aarch64.tar.gz"), + when(platform.is.linux_arm, "gitui-linux-arm.tar.gz"), + when(platform.is.win_x64, "gitui-win.tar.gz") + ), + }) + .with_receipt() + std.chmod("+x", { "gitui" }) + ctx:link_bin("gitui", platform.is.win and "gitui.exe" or "gitui") + end, +} diff --git a/lua/mason-registry/index/glint/init.lua b/lua/mason-registry/index/glint/init.lua new file mode 100644 index 00000000..baf9035c --- /dev/null +++ b/lua/mason-registry/index/glint/init.lua @@ -0,0 +1,22 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "glint", + desc = _.dedent [[ + Glint is a set of tools to aid in developing code that uses the Glimmer VM for rendering, such as + Ember.js v3.24+ and GlimmerX projects. Similar to Vetur for Vue projects or Svelte Language Tools, Glint + consists of a CLI and a language server to provide feedback and enforce correctness both locally during editing + and project-wide in CI. + ]], + homepage = "https://typed-ember.gitbook.io/glint/", + categories = { Pkg.Cat.LSP, Pkg.Cat.Linter }, + languages = { + Pkg.Lang.Handlebars, + Pkg.Lang.Glimmer, + Pkg.Lang.TypeScript, + Pkg.Lang.JavaScript, + }, + install = npm.packages { "@glint/core", "typescript", bin = { "glint", "glint-language-server" } }, +} diff --git a/lua/mason-registry/index/glow/init.lua b/lua/mason-registry/index/glow/init.lua new file mode 100644 index 00000000..0ef1c2db --- /dev/null +++ b/lua/mason-registry/index/glow/init.lua @@ -0,0 +1,47 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "glow", + desc = [[Render markdown on the CLI, with pizzazz]], + homepage = "https://github.com/charmbracelet/glow", + languages = { Pkg.Lang.Markdown }, + categories = {}, + install = function(ctx) + ---@param template_string string + local function release_file(template_string) + return _.compose(_.format(template_string), _.gsub("^v", "")) + end + local asset_file = coalesce( + when(platform.is.mac_arm64, release_file "glow_%s_Darwin_arm64.tar.gz"), + when(platform.is.mac_x64, release_file "glow_%s_Darwin_x86_64.tar.gz"), + when(platform.is.linux_x64_openbsd, release_file "glow_%s_openbsd_x86_64.tar.gz"), + when(platform.is.linux_arm64_openbsd, release_file "glow_%s_openbsd_arm64.tar.gz"), + when(platform.is.linux_arm64, release_file "glow_%s_linux_arm64.tar.gz"), + when(platform.is.linux_x64, release_file "glow_%s_linux_x86_64.tar.gz"), + when(platform.is.win_x86, release_file "glow_%s_Windows_i386.zip"), + when(platform.is.win_x64, release_file "glow_%s_Windows_x86_64.zip") + ) + local source = platform.when { + unix = function() + return github.untargz_release_file { + repo = "charmbracelet/glow", + asset_file = asset_file, + } + end, + win = function() + return github.unzip_release_file { + repo = "charmbracelet/glow", + asset_file = asset_file, + } + end, + } + source.with_receipt() + ctx:link_bin("glow", platform.is.win and "glow.exe" or "glow") + end, +} diff --git a/lua/mason-registry/index/go-debug-adapter/init.lua b/lua/mason-registry/index/go-debug-adapter/init.lua new file mode 100644 index 00000000..23e0f360 --- /dev/null +++ b/lua/mason-registry/index/go-debug-adapter/init.lua @@ -0,0 +1,27 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local path = require "mason-core.path" + +return Pkg.new { + name = "go-debug-adapter", + desc = [[Go debug adapter sourced from the VSCode Go extension.]], + homepage = "https://github.com/golang/vscode-go", + languages = { Pkg.Lang.Go }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "golang/vscode-go", + asset_file = _.compose(_.format "go-%s.vsix", _.gsub("^v", "")), + }) + .with_receipt() + + ctx:link_bin( + "go-debug-adapter", + ctx:write_node_exec_wrapper("go-debug-adapter", path.concat { "extension", "dist", "debugAdapter.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/gofumpt/init.lua b/lua/mason-registry/index/gofumpt/init.lua new file mode 100644 index 00000000..909007f2 --- /dev/null +++ b/lua/mason-registry/index/gofumpt/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "gofumpt", + desc = [[A stricter gofmt]], + homepage = "https://pkg.go.dev/mvdan.cc/gofumpt", + categories = { Pkg.Cat.Formatter }, + languages = { Pkg.Lang.Go }, + install = go.packages { "mvdan.cc/gofumpt", bin = { "gofumpt" } }, +} diff --git a/lua/mason-registry/index/goimports-reviser/init.lua b/lua/mason-registry/index/goimports-reviser/init.lua new file mode 100644 index 00000000..0ea92d68 --- /dev/null +++ b/lua/mason-registry/index/goimports-reviser/init.lua @@ -0,0 +1,38 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "goimports-reviser", + desc = _.dedent [[ + Tool for Golang to sort goimports by 3-4 groups: std, general, company (optional), and project dependencies. + Also, formatting for your code will be prepared (so, you don't need to use gofmt or goimports separately). + Use additional option -rm-unused to remove unused imports and -set-alias to rewrite import aliases for + versioned packages. + ]], + homepage = "https://pkg.go.dev/github.com/incu6us/goimports-reviser", + categories = { Pkg.Cat.Formatter }, + languages = { Pkg.Lang.Go }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local function format_release_file(template) + return _.compose(_.format(template), _.gsub("^v", "")) + end + + github + .untargz_release_file({ + repo = "incu6us/goimports-reviser", + asset_file = _.coalesce( + _.when(platform.is.mac_x64, format_release_file "goimports-reviser_%s_darwin_amd64.tar.gz"), + _.when(platform.is.mac_arm64, format_release_file "goimports-reviser_%s_darwin_arm64.tar.gz"), + _.when(platform.is.linux_x64, format_release_file "goimports-reviser_%s_linux_amd64.tar.gz"), + _.when(platform.is.win_x64, format_release_file "goimports-reviser_%s_windows_amd64.tar.gz") + ), + }) + .with_receipt() + + ctx:link_bin("goimports-reviser", platform.is.win and "goimports-reviser.exe" or "goimports-reviser") + end, +} diff --git a/lua/mason-registry/index/goimports/init.lua b/lua/mason-registry/index/goimports/init.lua new file mode 100644 index 00000000..012dbea2 --- /dev/null +++ b/lua/mason-registry/index/goimports/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "goimports", + desc = _.dedent [[ + A golang formatter which formats your code in the same style as gofmt and additionally updates your Go import + lines, adding missing ones and removing unreferenced ones. + ]], + homepage = "https://pkg.go.dev/golang.org/x/tools/cmd/goimports", + categories = { Pkg.Cat.Formatter }, + languages = { Pkg.Lang.Go }, + install = go.packages { "golang.org/x/tools/cmd/goimports", bin = { "goimports" } }, +} diff --git a/lua/mason-registry/index/golangci-lint-langserver/init.lua b/lua/mason-registry/index/golangci-lint-langserver/init.lua new file mode 100644 index 00000000..6a6c396d --- /dev/null +++ b/lua/mason-registry/index/golangci-lint-langserver/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "golangci-lint-langserver", + desc = [[golangci-lint language server]], + homepage = "https://github.com/nametake/golangci-lint-langserver", + languages = { Pkg.Lang.Go }, + categories = { Pkg.Cat.LSP }, + install = go.packages { "github.com/nametake/golangci-lint-langserver", bin = { "golangci-lint-langserver" } }, +} diff --git a/lua/mason-registry/index/golangci-lint/init.lua b/lua/mason-registry/index/golangci-lint/init.lua new file mode 100644 index 00000000..1d925733 --- /dev/null +++ b/lua/mason-registry/index/golangci-lint/init.lua @@ -0,0 +1,56 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "golangci-lint", + desc = _.dedent [[ + golangci-lint is a fast Go linters runner. It runs linters in parallel, uses caching, supports yaml config, has + integrations with all major IDE and has dozens of linters included. + ]], + homepage = "https://golangci-lint.run/", + languages = { Pkg.Lang.Go }, + categories = { Pkg.Cat.Linter }, + install = function(ctx) + local repo = "golangci/golangci-lint" + ---@param template_string string + local function release_file(template_string) + return _.compose(_.format(template_string), _.gsub("^v", "")) + end + + platform.when { + unix = function() + local source = github.untargz_release_file { + repo = repo, + asset_file = coalesce( + when(platform.is.linux_armv6l, release_file "golangci-lint-%s-linux-armv6.tar.gz"), + when(platform.is.linux_armv7l, release_file "golangci-lint-%s-linux-armv7.tar.gz"), + when(platform.is.linux_x64, release_file "golangci-lint-%s-linux-amd64.tar.gz"), + when(platform.is.linux_x86, release_file "golangci-lint-%s-linux-386.tar.gz"), + when(platform.is.darwin_x64, release_file "golangci-lint-%s-darwin-amd64.tar.gz"), + when(platform.is.darwin_arm64, release_file "golangci-lint-%s-darwin-arm64.tar.gz") + ), + } + source.with_receipt() + local directory = source.asset_file:gsub("%.tar%.gz$", "") + ctx:link_bin("golangci-lint", path.concat { directory, "golangci-lint" }) + end, + win = function() + local source = github.unzip_release_file { + repo = repo, + asset_file = coalesce( + when(platform.is.win_x64, release_file "golangci-lint-%s-windows-amd64.zip"), + when(platform.is.win_x86, release_file "golangci-lint-%s-windows-386.zip") + ), + } + source.with_receipt() + local directory = source.asset_file:gsub("%.zip$", "") + ctx:link_bin("golangci-lint", path.concat { directory, "golangci-lint.exe" }) + end, + } + end, +} diff --git a/lua/mason-registry/index/golines/init.lua b/lua/mason-registry/index/golines/init.lua new file mode 100644 index 00000000..d755cd23 --- /dev/null +++ b/lua/mason-registry/index/golines/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "golines", + desc = [[A golang formatter that fixes long lines]], + homepage = "https://github.com/segmentio/golines", + categories = { Pkg.Cat.Formatter }, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/segmentio/golines", bin = { "golines" } }, +} diff --git a/lua/mason-registry/index/gomodifytags/init.lua b/lua/mason-registry/index/gomodifytags/init.lua new file mode 100644 index 00000000..1e5e226e --- /dev/null +++ b/lua/mason-registry/index/gomodifytags/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "gomodifytags", + desc = [[Go tool to modify/update field tags in structs]], + homepage = "https://github.com/fatih/gomodifytags", + categories = {}, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/fatih/gomodifytags", bin = { "gomodifytags" } }, +} diff --git a/lua/mason-registry/index/google-java-format/init.lua b/lua/mason-registry/index/google-java-format/init.lua new file mode 100644 index 00000000..58cef182 --- /dev/null +++ b/lua/mason-registry/index/google-java-format/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +return Pkg.new { + name = "google-java-format", + desc = [[google-java-format is a program that reformats Java source code to comply with Google Java Style.]], + homepage = "https://github.com/google/google-java-format", + languages = { Pkg.Lang.Java }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "google/google-java-format", + out_file = "google-java-format.jar", + asset_file = function(release) + local version = release:gsub("^v", "") + return ("google-java-format-%s-all-deps.jar"):format(version) + end, + }) + .with_receipt() + + ctx:link_bin( + "google-java-format", + ctx:write_shell_exec_wrapper( + "google-java-format", + ("java -jar %q"):format(path.concat { ctx.package:get_install_path(), "google-java-format.jar" }) + ) + ) + end, +} diff --git a/lua/mason-registry/index/gopls/init.lua b/lua/mason-registry/index/gopls/init.lua new file mode 100644 index 00000000..95421b14 --- /dev/null +++ b/lua/mason-registry/index/gopls/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "gopls", + desc = _.dedent [[ + gopls (pronounced "Go please") is the official Go language server developed by the Go team. It provides IDE + features to any LSP-compatible editor. + ]], + homepage = "https://pkg.go.dev/golang.org/x/tools/gopls", + languages = { Pkg.Lang.Go }, + categories = { Pkg.Cat.LSP }, + install = go.packages { "golang.org/x/tools/gopls", bin = { "gopls" } }, +} diff --git a/lua/mason-registry/index/gospel/init.lua b/lua/mason-registry/index/gospel/init.lua new file mode 100644 index 00000000..9b740e82 --- /dev/null +++ b/lua/mason-registry/index/gospel/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "gospel", + desc = [[misspelled word linter for Go comments, string literals and embedded files]], + homepage = "https://github.com/kortschak/gospel", + categories = { Pkg.Cat.Linter }, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/kortschak/gospel", bin = { "gospel" } }, +} diff --git a/lua/mason-registry/index/gotests/init.lua b/lua/mason-registry/index/gotests/init.lua new file mode 100644 index 00000000..d7aae651 --- /dev/null +++ b/lua/mason-registry/index/gotests/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "gotests", + desc = _.dedent [[ + Gotests is a Golang commandline tool that generates table driven tests based on its target source files' + function and method signatures. + ]], + homepage = "https://github.com/cweill/gotests", + categories = {}, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/cweill/gotests/...", bin = { "gotests" } }, +} diff --git a/lua/mason-registry/index/gotestsum/init.lua b/lua/mason-registry/index/gotestsum/init.lua new file mode 100644 index 00000000..199c36e9 --- /dev/null +++ b/lua/mason-registry/index/gotestsum/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "gotestsum", + desc = _.dedent [[ + 'go test' runner with output optimized for humans, JUnit XML for CI integration, and + a summary of the test results. + ]], + homepage = "https://github.com/gotestyourself/gotestsum", + categories = {}, + languages = { Pkg.Lang.Go }, + install = go.packages { "gotest.tools/gotestsum", bin = { "gotestsum" } }, +} diff --git a/lua/mason-registry/index/gradle-language-server/init.lua b/lua/mason-registry/index/gradle-language-server/init.lua new file mode 100644 index 00000000..61cbee5e --- /dev/null +++ b/lua/mason-registry/index/gradle-language-server/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "gradle-language-server", + desc = [[Gradle language server.]], + homepage = "https://github.com/microsoft/vscode-gradle", + languages = { Pkg.Lang.Gradle }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + asset_file = _.format "vscjava.vscode-gradle-%s.vsix", + repo = "microsoft/vscode-gradle", + }) + .with_receipt() + + ctx.fs:rename(path.concat { "extension", "lib" }, "lib") + ctx.fs:rmrf "extension" + ctx:link_bin( + "gradle-language-server", + ctx:write_shell_exec_wrapper( + "gradle-language-server", + ("java -jar %q"):format( + path.concat { ctx.package:get_install_path(), "lib", "gradle-language-server.jar" } + ) + ) + ) + end, +} diff --git a/lua/mason-registry/index/grammarly-languageserver/init.lua b/lua/mason-registry/index/grammarly-languageserver/init.lua new file mode 100644 index 00000000..b0a9a739 --- /dev/null +++ b/lua/mason-registry/index/grammarly-languageserver/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "grammarly-languageserver", + desc = [[A language server implementation on top of Grammarly's SDK.]], + homepage = "https://github.com/znck/grammarly", + languages = { Pkg.Lang.Markdown, Pkg.Lang.Text }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "grammarly-languageserver", bin = { "grammarly-languageserver" } }, +} diff --git a/lua/mason-registry/index/graphql-language-service-cli/init.lua b/lua/mason-registry/index/graphql-language-service-cli/init.lua new file mode 100644 index 00000000..0bf6f1e6 --- /dev/null +++ b/lua/mason-registry/index/graphql-language-service-cli/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "graphql-language-service-cli", + desc = [[GraphQL Language Service provides an interface for building GraphQL language services for IDEs.]], + homepage = "https://www.npmjs.com/package/graphql-language-service-cli", + languages = { Pkg.Lang.GraphQL }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "graphql-language-service-cli", "graphql", bin = { "graphql-lsp" } }, +} diff --git a/lua/mason-registry/index/groovy-language-server/init.lua b/lua/mason-registry/index/groovy-language-server/init.lua new file mode 100644 index 00000000..1470c7a4 --- /dev/null +++ b/lua/mason-registry/index/groovy-language-server/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local std = require "mason-core.managers.std" +local git = require "mason-core.managers.git" +local path = require "mason-core.path" + +return Pkg.new { + name = "groovy-language-server", + desc = [[A language server for Groovy]], + homepage = "https://github.com/GroovyLanguageServer/groovy-language-server", + languages = { Pkg.Lang.Groovy }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + std.ensure_executable "javac" + git.clone({ "https://github.com/GroovyLanguageServer/groovy-language-server" }).with_receipt() + ctx:promote_cwd() + ctx.spawn.gradlew { + "build", + with_paths = { ctx.cwd:get() }, + } + + ctx:link_bin( + "groovy-language-server", + ctx:write_shell_exec_wrapper( + "groovy-language-server", + ("java -jar %q"):format( + path.concat { ctx.package:get_install_path(), "build", "libs", "groovy-language-server-all.jar" } + ) + ) + ) + end, +} diff --git a/lua/mason-registry/index/hadolint/init.lua b/lua/mason-registry/index/hadolint/init.lua new file mode 100644 index 00000000..55a77873 --- /dev/null +++ b/lua/mason-registry/index/hadolint/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "hadolint", + desc = [[Dockerfile linter, validate inline bash, written in Haskell]], + homepage = "https://github.com/hadolint/hadolint", + languages = { Pkg.Lang.Docker }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "hadolint/hadolint", + out_file = platform.is.win and "hadolint.exe" or "hadolint", + asset_file = coalesce( + when(platform.is.mac, "hadolint-Darwin-x86_64"), + when(platform.is.linux_arm64, "hadolint-Linux-arm64"), + when(platform.is.linux_x64, "hadolint-Linux-x86_64"), + when(platform.is.win_x64, "hadolint-Windows-x86_64.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "hadolint" }) + ctx:link_bin("hadolint", platform.is.win and "hadolint.exe" or "hadolint") + end, +} diff --git a/lua/mason-registry/index/haml-lint/init.lua b/lua/mason-registry/index/haml-lint/init.lua new file mode 100644 index 00000000..d6edabdd --- /dev/null +++ b/lua/mason-registry/index/haml-lint/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "haml-lint", + desc = _.dedent [[ + haml-lint is a tool to help keep your HAML files clean and readable. In addition to HAML-specific style and lint + checks, it integrates with RuboCop to bring its powerful static analysis tools to your HAML documents. + ]], + homepage = "https://github.com/sds/haml-lint", + languages = { Pkg.Lang.HAML }, + categories = { Pkg.Cat.Linter }, + install = gem.packages { "haml_lint", bin = { "haml-lint" } }, +} diff --git a/lua/mason-registry/index/haskell-language-server/init.lua b/lua/mason-registry/index/haskell-language-server/init.lua new file mode 100644 index 00000000..8f0e3d42 --- /dev/null +++ b/lua/mason-registry/index/haskell-language-server/init.lua @@ -0,0 +1,55 @@ +local a = require "mason-core.async" +local _ = require "mason-core.functional" +local Pkg = require "mason-core.package" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "haskell-language-server", + desc = [[Official Haskell Language Server implementation.]], + homepage = "https://haskell-language-server.readthedocs.io/en/latest/", + languages = { Pkg.Lang.Haskell }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.release_version { repo = "haskell/haskell-language-server" } + source.with_receipt() + + std.ensure_executable("ghcup", { help_url = "https://www.haskell.org/ghcup/" }) + ctx:promote_cwd() + ctx.spawn.ghcup { "install", "hls", source.release, "-i", ctx.cwd:get() } + + platform.when { + unix = function() + ctx:link_bin( + "haskell-language-server-wrapper", + path.concat { "bin", "haskell-language-server-wrapper" } + ) + + a.scheduler() + for _, executable_abs_path in + ipairs( + vim.fn.glob(path.concat { ctx.cwd:get(), "bin", "haskell-language-server-[0-9]*" }, true, true) + ) + do + local executable = vim.fn.fnamemodify(executable_abs_path, ":t") + ctx:link_bin(executable, path.concat { "bin", executable }) + end + end, + win = function() + ctx:link_bin("haskell-language-server-wrapper", "haskell-language-server-wrapper.exe") + + a.scheduler() + for _, executable_abs_path in + ipairs(vim.fn.glob(path.concat { ctx.cwd:get(), "haskell-language-server-[0-9]*" }, true, true)) + do + local executable = vim.fn.fnamemodify(executable_abs_path, ":t:r") + ctx:link_bin(executable, ("%s.exe"):format(executable)) + end + end, + } + end, +} diff --git a/lua/mason-registry/index/haxe-language-server/init.lua b/lua/mason-registry/index/haxe-language-server/init.lua new file mode 100644 index 00000000..77a14e46 --- /dev/null +++ b/lua/mason-registry/index/haxe-language-server/init.lua @@ -0,0 +1,26 @@ +local Pkg = require "mason-core.package" +local std = require "mason-core.managers.std" +local git = require "mason-core.managers.git" +local npm = require "mason-core.managers.npm" +local path = require "mason-core.path" + +return Pkg.new { + name = "haxe-language-server", + desc = [[Language Server Protocol implementation for the Haxe language]], + homepage = "https://github.com/vshaxe/haxe-language-server", + languages = { Pkg.Lang.Haxe }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + std.ensure_executable("haxelib", { help_url = "https://haxe.org" }) + git.clone({ "https://github.com/vshaxe/haxe-language-server" }).with_receipt() + ctx.spawn.npm { "install" } + npm.exec { "lix", "run", "vshaxe-build", "-t", "language-server" } + ctx.spawn.npm { "install", "--production" } + ctx:link_bin( + "haxe-language-server", + ctx:write_node_exec_wrapper("haxe-language-server", path.concat { "bin", "server.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/hoon-language-server/init.lua b/lua/mason-registry/index/hoon-language-server/init.lua new file mode 100644 index 00000000..5d5ee234 --- /dev/null +++ b/lua/mason-registry/index/hoon-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "hoon-language-server", + desc = [[Language Server for Hoon. Middleware to translate between the Language Server Protocol and your Urbit.]], + homepage = "https://github.com/urbit/hoon-language-server", + languages = { Pkg.Lang.Hoon }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@urbit/hoon-language-server", bin = { "hoon-language-server" } }, +} diff --git a/lua/mason-registry/index/html-lsp/init.lua b/lua/mason-registry/index/html-lsp/init.lua new file mode 100644 index 00000000..ff8de04d --- /dev/null +++ b/lua/mason-registry/index/html-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "html-lsp", + desc = [[Language Server Protocol implementation for HTML.]], + homepage = "https://github.com/microsoft/vscode-html-languageservice", + languages = { Pkg.Lang.HTML }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "vscode-langservers-extracted", bin = { "vscode-html-language-server" } }, +} diff --git a/lua/mason-registry/index/iferr/init.lua b/lua/mason-registry/index/iferr/init.lua new file mode 100644 index 00000000..fbac2180 --- /dev/null +++ b/lua/mason-registry/index/iferr/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "iferr", + desc = [[Go tool to generate if err != nil block for the current function.]], + homepage = "https://github.com/koron/iferr", + categories = {}, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/koron/iferr", bin = { "iferr" } }, +} diff --git a/lua/mason-registry/index/impl/init.lua b/lua/mason-registry/index/impl/init.lua new file mode 100644 index 00000000..5969132f --- /dev/null +++ b/lua/mason-registry/index/impl/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "impl", + desc = [[impl generates method stubs for implementing an interface.]], + homepage = "https://github.com/josharian/impl", + categories = {}, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/josharian/impl", bin = { "impl" } }, +} diff --git a/lua/mason-registry/index/init.lua b/lua/mason-registry/index/init.lua new file mode 100644 index 00000000..f9af1add --- /dev/null +++ b/lua/mason-registry/index/init.lua @@ -0,0 +1,283 @@ +-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY. +-- stylua: ignore start +return { + actionlint = "mason-registry.index.actionlint", + ["ada-language-server"] = "mason-registry.index.ada-language-server", + alex = "mason-registry.index.alex", + ["angular-language-server"] = "mason-registry.index.angular-language-server", + ["ansible-language-server"] = "mason-registry.index.ansible-language-server", + ["ansible-lint"] = "mason-registry.index.ansible-lint", + ["antlers-language-server"] = "mason-registry.index.antlers-language-server", + ["apex-language-server"] = "mason-registry.index.apex-language-server", + ["arduino-language-server"] = "mason-registry.index.arduino-language-server", + ["asm-lsp"] = "mason-registry.index.asm-lsp", + ["astro-language-server"] = "mason-registry.index.astro-language-server", + autoflake = "mason-registry.index.autoflake", + autopep8 = "mason-registry.index.autopep8", + ["awk-language-server"] = "mason-registry.index.awk-language-server", + ["bash-debug-adapter"] = "mason-registry.index.bash-debug-adapter", + ["bash-language-server"] = "mason-registry.index.bash-language-server", + ["beancount-language-server"] = "mason-registry.index.beancount-language-server", + beautysh = "mason-registry.index.beautysh", + ["bicep-lsp"] = "mason-registry.index.bicep-lsp", + black = "mason-registry.index.black", + ["blackd-client"] = "mason-registry.index.blackd-client", + ["blade-formatter"] = "mason-registry.index.blade-formatter", + blue = "mason-registry.index.blue", + brighterscript = "mason-registry.index.brighterscript", + ["brighterscript-formatter"] = "mason-registry.index.brighterscript-formatter", + ["bsl-language-server"] = "mason-registry.index.bsl-language-server", + buf = "mason-registry.index.buf", + ["buf-language-server"] = "mason-registry.index.buf-language-server", + buildifier = "mason-registry.index.buildifier", + cbfmt = "mason-registry.index.cbfmt", + ["cfn-lint"] = "mason-registry.index.cfn-lint", + ["chrome-debug-adapter"] = "mason-registry.index.chrome-debug-adapter", + ["clang-format"] = "mason-registry.index.clang-format", + clangd = "mason-registry.index.clangd", + ["clarity-lsp"] = "mason-registry.index.clarity-lsp", + ["clojure-lsp"] = "mason-registry.index.clojure-lsp", + ["cmake-language-server"] = "mason-registry.index.cmake-language-server", + cmakelang = "mason-registry.index.cmakelang", + codelldb = "mason-registry.index.codelldb", + codeql = "mason-registry.index.codeql", + codespell = "mason-registry.index.codespell", + ["colorgen-nvim"] = "mason-registry.index.colorgen-nvim", + commitlint = "mason-registry.index.commitlint", + cpplint = "mason-registry.index.cpplint", + cpptools = "mason-registry.index.cpptools", + crystalline = "mason-registry.index.crystalline", + ["csharp-language-server"] = "mason-registry.index.csharp-language-server", + csharpier = "mason-registry.index.csharpier", + cspell = "mason-registry.index.cspell", + ["css-lsp"] = "mason-registry.index.css-lsp", + ["cssmodules-language-server"] = "mason-registry.index.cssmodules-language-server", + ["cucumber-language-server"] = "mason-registry.index.cucumber-language-server", + cueimports = "mason-registry.index.cueimports", + cuelsp = "mason-registry.index.cuelsp", + curlylint = "mason-registry.index.curlylint", + ["dart-debug-adapter"] = "mason-registry.index.dart-debug-adapter", + debugpy = "mason-registry.index.debugpy", + delve = "mason-registry.index.delve", + deno = "mason-registry.index.deno", + ["dhall-lsp"] = "mason-registry.index.dhall-lsp", + ["diagnostic-languageserver"] = "mason-registry.index.diagnostic-languageserver", + djlint = "mason-registry.index.djlint", + ["docker-compose-language-service"] = "mason-registry.index.docker-compose-language-service", + ["dockerfile-language-server"] = "mason-registry.index.dockerfile-language-server", + ["dot-language-server"] = "mason-registry.index.dot-language-server", + dprint = "mason-registry.index.dprint", + ["drools-lsp"] = "mason-registry.index.drools-lsp", + ["editorconfig-checker"] = "mason-registry.index.editorconfig-checker", + efm = "mason-registry.index.efm", + ["elixir-ls"] = "mason-registry.index.elixir-ls", + ["elm-format"] = "mason-registry.index.elm-format", + ["elm-language-server"] = "mason-registry.index.elm-language-server", + ["ember-language-server"] = "mason-registry.index.ember-language-server", + ["emmet-ls"] = "mason-registry.index.emmet-ls", + ["erb-lint"] = "mason-registry.index.erb-lint", + erg = "mason-registry.index.erg", + ["erg-language-server"] = "mason-registry.index.erg-language-server", + ["erlang-ls"] = "mason-registry.index.erlang-ls", + esbonio = "mason-registry.index.esbonio", + ["eslint-lsp"] = "mason-registry.index.eslint-lsp", + eslint_d = "mason-registry.index.eslint_d", + fantomas = "mason-registry.index.fantomas", + ["fennel-language-server"] = "mason-registry.index.fennel-language-server", + ["firefox-debug-adapter"] = "mason-registry.index.firefox-debug-adapter", + fixjson = "mason-registry.index.fixjson", + flake8 = "mason-registry.index.flake8", + ["flux-lsp"] = "mason-registry.index.flux-lsp", + ["foam-language-server"] = "mason-registry.index.foam-language-server", + fortls = "mason-registry.index.fortls", + fourmolu = "mason-registry.index.fourmolu", + fsautocomplete = "mason-registry.index.fsautocomplete", + gersemi = "mason-registry.index.gersemi", + gitlint = "mason-registry.index.gitlint", + gitui = "mason-registry.index.gitui", + glint = "mason-registry.index.glint", + glow = "mason-registry.index.glow", + ["go-debug-adapter"] = "mason-registry.index.go-debug-adapter", + gofumpt = "mason-registry.index.gofumpt", + goimports = "mason-registry.index.goimports", + ["goimports-reviser"] = "mason-registry.index.goimports-reviser", + ["golangci-lint"] = "mason-registry.index.golangci-lint", + ["golangci-lint-langserver"] = "mason-registry.index.golangci-lint-langserver", + golines = "mason-registry.index.golines", + gomodifytags = "mason-registry.index.gomodifytags", + ["google-java-format"] = "mason-registry.index.google-java-format", + gopls = "mason-registry.index.gopls", + gospel = "mason-registry.index.gospel", + gotests = "mason-registry.index.gotests", + gotestsum = "mason-registry.index.gotestsum", + ["gradle-language-server"] = "mason-registry.index.gradle-language-server", + ["grammarly-languageserver"] = "mason-registry.index.grammarly-languageserver", + ["graphql-language-service-cli"] = "mason-registry.index.graphql-language-service-cli", + ["groovy-language-server"] = "mason-registry.index.groovy-language-server", + hadolint = "mason-registry.index.hadolint", + ["haml-lint"] = "mason-registry.index.haml-lint", + ["haskell-language-server"] = "mason-registry.index.haskell-language-server", + ["haxe-language-server"] = "mason-registry.index.haxe-language-server", + ["hoon-language-server"] = "mason-registry.index.hoon-language-server", + ["html-lsp"] = "mason-registry.index.html-lsp", + iferr = "mason-registry.index.iferr", + impl = "mason-registry.index.impl", + intelephense = "mason-registry.index.intelephense", + isort = "mason-registry.index.isort", + ["java-debug-adapter"] = "mason-registry.index.java-debug-adapter", + ["java-test"] = "mason-registry.index.java-test", + jdtls = "mason-registry.index.jdtls", + ["jedi-language-server"] = "mason-registry.index.jedi-language-server", + joker = "mason-registry.index.joker", + jq = "mason-registry.index.jq", + ["jq-lsp"] = "mason-registry.index.jq-lsp", + ["js-debug-adapter"] = "mason-registry.index.js-debug-adapter", + ["json-lsp"] = "mason-registry.index.json-lsp", + ["json-to-struct"] = "mason-registry.index.json-to-struct", + jsonlint = "mason-registry.index.jsonlint", + ["jsonnet-language-server"] = "mason-registry.index.jsonnet-language-server", + ["julia-lsp"] = "mason-registry.index.julia-lsp", + ["kotlin-debug-adapter"] = "mason-registry.index.kotlin-debug-adapter", + ["kotlin-language-server"] = "mason-registry.index.kotlin-language-server", + ktlint = "mason-registry.index.ktlint", + latexindent = "mason-registry.index.latexindent", + lelwel = "mason-registry.index.lelwel", + lemminx = "mason-registry.index.lemminx", + ["lemmy-help"] = "mason-registry.index.lemmy-help", + ["ltex-ls"] = "mason-registry.index.ltex-ls", + ["lua-language-server"] = "mason-registry.index.lua-language-server", + luacheck = "mason-registry.index.luacheck", + luaformatter = "mason-registry.index.luaformatter", + ["luau-lsp"] = "mason-registry.index.luau-lsp", + markdownlint = "mason-registry.index.markdownlint", + marksman = "mason-registry.index.marksman", + ["metamath-zero-lsp"] = "mason-registry.index.metamath-zero-lsp", + misspell = "mason-registry.index.misspell", + mockdebug = "mason-registry.index.mockdebug", + ["move-analyzer"] = "mason-registry.index.move-analyzer", + mypy = "mason-registry.index.mypy", + neocmakelsp = "mason-registry.index.neocmakelsp", + netcoredbg = "mason-registry.index.netcoredbg", + ["nginx-language-server"] = "mason-registry.index.nginx-language-server", + ["nickel-lang-lsp"] = "mason-registry.index.nickel-lang-lsp", + ["nil"] = "mason-registry.index.nil", + nimlsp = "mason-registry.index.nimlsp", + ["node-debug2-adapter"] = "mason-registry.index.node-debug2-adapter", + nxls = "mason-registry.index.nxls", + ["ocaml-lsp"] = "mason-registry.index.ocaml-lsp", + ocamlformat = "mason-registry.index.ocamlformat", + omnisharp = "mason-registry.index.omnisharp", + ["omnisharp-mono"] = "mason-registry.index.omnisharp-mono", + ["opencl-language-server"] = "mason-registry.index.opencl-language-server", + ["openscad-lsp"] = "mason-registry.index.openscad-lsp", + perlnavigator = "mason-registry.index.perlnavigator", + ["php-cs-fixer"] = "mason-registry.index.php-cs-fixer", + ["php-debug-adapter"] = "mason-registry.index.php-debug-adapter", + phpactor = "mason-registry.index.phpactor", + phpcbf = "mason-registry.index.phpcbf", + phpcs = "mason-registry.index.phpcs", + phpmd = "mason-registry.index.phpmd", + phpstan = "mason-registry.index.phpstan", + pint = "mason-registry.index.pint", + ["powershell-editor-services"] = "mason-registry.index.powershell-editor-services", + prettier = "mason-registry.index.prettier", + prettierd = "mason-registry.index.prettierd", + ["prisma-language-server"] = "mason-registry.index.prisma-language-server", + proselint = "mason-registry.index.proselint", + ["prosemd-lsp"] = "mason-registry.index.prosemd-lsp", + protolint = "mason-registry.index.protolint", + psalm = "mason-registry.index.psalm", + ["puppet-editor-services"] = "mason-registry.index.puppet-editor-services", + ["purescript-language-server"] = "mason-registry.index.purescript-language-server", + pydocstyle = "mason-registry.index.pydocstyle", + pylama = "mason-registry.index.pylama", + pylint = "mason-registry.index.pylint", + ["pyproject-flake8"] = "mason-registry.index.pyproject-flake8", + pyre = "mason-registry.index.pyre", + pyright = "mason-registry.index.pyright", + ["python-lsp-server"] = "mason-registry.index.python-lsp-server", + ["quick-lint-js"] = "mason-registry.index.quick-lint-js", + ["r-languageserver"] = "mason-registry.index.r-languageserver", + ["raku-navigator"] = "mason-registry.index.raku-navigator", + ["reason-language-server"] = "mason-registry.index.reason-language-server", + ["remark-cli"] = "mason-registry.index.remark-cli", + ["remark-language-server"] = "mason-registry.index.remark-language-server", + ["reorder-python-imports"] = "mason-registry.index.reorder-python-imports", + ["rescript-lsp"] = "mason-registry.index.rescript-lsp", + revive = "mason-registry.index.revive", + ["rnix-lsp"] = "mason-registry.index.rnix-lsp", + ["robotframework-lsp"] = "mason-registry.index.robotframework-lsp", + rome = "mason-registry.index.rome", + rstcheck = "mason-registry.index.rstcheck", + rubocop = "mason-registry.index.rubocop", + ["ruby-lsp"] = "mason-registry.index.ruby-lsp", + ruff = "mason-registry.index.ruff", + ["ruff-lsp"] = "mason-registry.index.ruff-lsp", + ["rust-analyzer"] = "mason-registry.index.rust-analyzer", + rustfmt = "mason-registry.index.rustfmt", + rustywind = "mason-registry.index.rustywind", + ["salt-lsp"] = "mason-registry.index.salt-lsp", + selene = "mason-registry.index.selene", + semgrep = "mason-registry.index.semgrep", + ["serve-d"] = "mason-registry.index.serve-d", + shellcheck = "mason-registry.index.shellcheck", + shellharden = "mason-registry.index.shellharden", + shfmt = "mason-registry.index.shfmt", + ["shopify-theme-check"] = "mason-registry.index.shopify-theme-check", + ["slint-lsp"] = "mason-registry.index.slint-lsp", + ["smithy-language-server"] = "mason-registry.index.smithy-language-server", + solang = "mason-registry.index.solang", + solargraph = "mason-registry.index.solargraph", + solhint = "mason-registry.index.solhint", + solidity = "mason-registry.index.solidity", + ["solidity-ls"] = "mason-registry.index.solidity-ls", + sorbet = "mason-registry.index.sorbet", + sourcery = "mason-registry.index.sourcery", + ["spectral-language-server"] = "mason-registry.index.spectral-language-server", + ["sql-formatter"] = "mason-registry.index.sql-formatter", + sqlfluff = "mason-registry.index.sqlfluff", + sqlls = "mason-registry.index.sqlls", + sqls = "mason-registry.index.sqls", + standardrb = "mason-registry.index.standardrb", + staticcheck = "mason-registry.index.staticcheck", + ["stylelint-lsp"] = "mason-registry.index.stylelint-lsp", + stylua = "mason-registry.index.stylua", + ["svelte-language-server"] = "mason-registry.index.svelte-language-server", + svlangserver = "mason-registry.index.svlangserver", + svls = "mason-registry.index.svls", + ["tailwindcss-language-server"] = "mason-registry.index.tailwindcss-language-server", + taplo = "mason-registry.index.taplo", + ["teal-language-server"] = "mason-registry.index.teal-language-server", + tectonic = "mason-registry.index.tectonic", + ["terraform-ls"] = "mason-registry.index.terraform-ls", + texlab = "mason-registry.index.texlab", + textlint = "mason-registry.index.textlint", + tflint = "mason-registry.index.tflint", + twigcs = "mason-registry.index.twigcs", + ["typescript-language-server"] = "mason-registry.index.typescript-language-server", + ["unocss-language-server"] = "mason-registry.index.unocss-language-server", + usort = "mason-registry.index.usort", + vacuum = "mason-registry.index.vacuum", + ["vala-language-server"] = "mason-registry.index.vala-language-server", + vale = "mason-registry.index.vale", + verible = "mason-registry.index.verible", + ["veryl-ls"] = "mason-registry.index.veryl-ls", + ["vetur-vls"] = "mason-registry.index.vetur-vls", + ["vim-language-server"] = "mason-registry.index.vim-language-server", + vint = "mason-registry.index.vint", + ["visualforce-language-server"] = "mason-registry.index.visualforce-language-server", + vls = "mason-registry.index.vls", + vtsls = "mason-registry.index.vtsls", + ["vue-language-server"] = "mason-registry.index.vue-language-server", + vulture = "mason-registry.index.vulture", + ["wgsl-analyzer"] = "mason-registry.index.wgsl-analyzer", + ["write-good"] = "mason-registry.index.write-good", + xmlformatter = "mason-registry.index.xmlformatter", + xo = "mason-registry.index.xo", + ["yaml-language-server"] = "mason-registry.index.yaml-language-server", + yamlfmt = "mason-registry.index.yamlfmt", + yamllint = "mason-registry.index.yamllint", + yapf = "mason-registry.index.yapf", + zk = "mason-registry.index.zk", + zls = "mason-registry.index.zls" +}
\ No newline at end of file diff --git a/lua/mason-registry/index/intelephense/init.lua b/lua/mason-registry/index/intelephense/init.lua new file mode 100644 index 00000000..fd8cd7c1 --- /dev/null +++ b/lua/mason-registry/index/intelephense/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "intelephense", + desc = [[Professional PHP tooling for any Language Server Protocol capable editor.]], + homepage = "https://intelephense.com", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "intelephense", bin = { "intelephense" } }, +} diff --git a/lua/mason-registry/index/isort/init.lua b/lua/mason-registry/index/isort/init.lua new file mode 100644 index 00000000..01c129e4 --- /dev/null +++ b/lua/mason-registry/index/isort/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "isort", + desc = [[isort is a Python utility / library to sort imports alphabetically]], + homepage = "https://pypi.org/project/isort/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "isort", bin = { "isort" } }, +} diff --git a/lua/mason-registry/index/java-debug-adapter/init.lua b/lua/mason-registry/index/java-debug-adapter/init.lua new file mode 100644 index 00000000..923804be --- /dev/null +++ b/lua/mason-registry/index/java-debug-adapter/init.lua @@ -0,0 +1,25 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local path = require "mason-core.path" + +return Pkg.new { + name = "java-debug-adapter", + desc = [[The debug server implementation for Java. It conforms to the debugger adapter protocol.]], + homepage = "https://github.com/microsoft/java-debug", + languages = { Pkg.Lang.Java }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "microsoft/vscode-java-debug", + asset_file = _.format "vscjava.vscode-java-debug-%s.vsix", + }) + .with_receipt() + + ctx.fs:rmrf(path.concat { "extension", "images" }) + ctx.fs:rmrf(path.concat { "extension", "dist" }) + end, +} diff --git a/lua/mason-registry/index/java-test/init.lua b/lua/mason-registry/index/java-test/init.lua new file mode 100644 index 00000000..6366572d --- /dev/null +++ b/lua/mason-registry/index/java-test/init.lua @@ -0,0 +1,37 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local path = require "mason-core.path" + +return Pkg.new { + name = "java-test", + desc = _.dedent [[ + The Test Runner for Java works with java-debug-adapter to provide the following features: + - Run/Debug test cases + - Customize test configurations + - View test report + - View tests in Test Explorer + + Enables support for the following test frameworks: + + - JUnit 4 (v4.8.0+) + - JUnit 5 (v5.1.0+) + - TestNG (v6.8.0+) + ]], + homepage = "https://github.com/microsoft/vscode-java-test", + languages = { Pkg.Lang.Java }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "microsoft/vscode-java-test", + asset_file = _.format "vscjava.vscode-java-test-%s.vsix", + }) + .with_receipt() + + ctx.fs:rmrf(path.concat { "extension", "resources" }) + ctx.fs:rmrf(path.concat { "extension", "dist" }) + end, +} diff --git a/lua/mason-registry/index/jdtls/init.lua b/lua/mason-registry/index/jdtls/init.lua new file mode 100644 index 00000000..b3a5f640 --- /dev/null +++ b/lua/mason-registry/index/jdtls/init.lua @@ -0,0 +1,61 @@ +local Pkg = require "mason-core.package" +local installer = require "mason-core.installer" +local _ = require "mason-core.functional" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" +local platform = require "mason-core.platform" +local fetch = require "mason-core.fetch" + +---@async +local function download_jdtls() + local source = github.tag { repo = "eclipse/eclipse.jdt.ls" } + source.with_receipt() + + local version = _.gsub("^v", "", source.tag) + local response = + fetch(("https://download.eclipse.org/jdtls/milestones/%s/latest.txt"):format(version)):get_or_throw "Failed to fetch latest release from eclipse.org." + local release_file = _.head(_.split("\n", response)) + + std.download_file( + ("https://download.eclipse.org/jdtls/milestones/%s/%s"):format(version, release_file), + "archive.tar.gz" + ) + std.untar "archive.tar.gz" +end + +---@async +local function download_lombok() + std.download_file("https://projectlombok.org/downloads/lombok.jar", "lombok.jar") +end + +return Pkg.new { + name = "jdtls", + desc = [[Java language server]], + homepage = "https://github.com/eclipse/eclipse.jdt.ls", + languages = { Pkg.Lang.Java }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + installer.run_concurrently { download_jdtls, download_lombok } + platform.when { + unix = function() + ctx:link_bin("jdtls", path.concat { "bin", "jdtls" }) + end, + win = function() + ctx:link_bin( + "jdtls", + ctx:write_shell_exec_wrapper( + path.concat { "bin", "jdtls-win" }, + ("python %q"):format(path.concat { + ctx.package:get_install_path(), + "bin", + "jdtls.py", + }) + ) + ) + end, + } + end, +} diff --git a/lua/mason-registry/index/jedi-language-server/init.lua b/lua/mason-registry/index/jedi-language-server/init.lua new file mode 100644 index 00000000..b19eb3c3 --- /dev/null +++ b/lua/mason-registry/index/jedi-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "jedi-language-server", + desc = [[A Python language server exclusively for Jedi. If Jedi supports it well, this language server should too.]], + homepage = "https://github.com/pappasam/jedi-language-server", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "jedi-language-server", bin = { "jedi-language-server" } }, +} diff --git a/lua/mason-registry/index/joker/init.lua b/lua/mason-registry/index/joker/init.lua new file mode 100644 index 00000000..2774e0cc --- /dev/null +++ b/lua/mason-registry/index/joker/init.lua @@ -0,0 +1,31 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "joker", + desc = [[Small Clojure interpreter, linter and formatter]], + homepage = "https://github.com/candid82/joker", + languages = { Pkg.Lang.Clojure, Pkg.Lang.ClojureScript }, + categories = { Pkg.Cat.Formatter, Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "candid82/joker", + asset_file = coalesce( + when(platform.is.mac, "joker-mac-amd64.zip"), + when(platform.is.linux_x64, "joker-linux-amd64.zip"), + when(platform.is.win_x64, "joker-win-amd64.zip") + ), + }) + .with_receipt() + std.chmod("+x", { "joker" }) + ctx:link_bin("joker", platform.is.win and "joker.exe" or "joker") + end, +} diff --git a/lua/mason-registry/index/jq-lsp/init.lua b/lua/mason-registry/index/jq-lsp/init.lua new file mode 100644 index 00000000..f96ec79b --- /dev/null +++ b/lua/mason-registry/index/jq-lsp/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "jq-lsp", + desc = _.dedent [[ + jq-lsp is a language server for the jq language, developed by Mattias Wadman. It provides IDE features to any + LSP-compatible editor. + ]], + homepage = "https://github.com/wader/jq-lsp", + languages = { Pkg.Lang.Jq }, + categories = { Pkg.Cat.LSP }, + install = go.packages { "github.com/wader/jq-lsp", bin = { "jq-lsp" } }, +} diff --git a/lua/mason-registry/index/jq/init.lua b/lua/mason-registry/index/jq/init.lua new file mode 100644 index 00000000..e3a5db5b --- /dev/null +++ b/lua/mason-registry/index/jq/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "jq", + desc = [[Command-line JSON processor]], + homepage = "https://github.com/stedolan/jq", + languages = { Pkg.Lang.JSON }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "stedolan/jq", + out_file = platform.is.win and "jq.exe" or "jq", + asset_file = coalesce( + when(platform.is.mac, "jq-osx-amd64"), + when(platform.is.linux_x86, "jq-linux32"), + when(platform.is.linux_x64, "jq-linux64"), + when(platform.is.win_x86, "jq-win32.exe"), + when(platform.is.win_x64, "jq-win64.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "jq" }) + ctx:link_bin("jq", platform.is.win and "jq.exe" or "jq") + end, +} diff --git a/lua/mason-registry/index/js-debug-adapter/init.lua b/lua/mason-registry/index/js-debug-adapter/init.lua new file mode 100644 index 00000000..aec75201 --- /dev/null +++ b/lua/mason-registry/index/js-debug-adapter/init.lua @@ -0,0 +1,28 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local git = require "mason-core.managers.git" +local _ = require "mason-core.functional" +local path = require "mason-core.path" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "js-debug-adapter", + desc = [[The VS Code JavaScript debugger]], + homepage = "https://github.com/microsoft/vscode-js-debug", + languages = { Pkg.Lang.JavaScript, Pkg.Lang.TypeScript }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.tag { repo = "microsoft/vscode-js-debug" } + source.with_receipt() + git.clone { "https://github.com/microsoft/vscode-js-debug", version = Optional.of(source.tag) } + ctx.spawn.npm { "install", "--ignore-scripts", "--legacy-peer-deps" } + ctx.spawn.npm { "run", "compile" } + ctx.spawn.npm { "install", "--production", "--ignore-scripts", "--legacy-peer-deps" } + ctx:link_bin( + "js-debug-adapter", + ctx:write_node_exec_wrapper("js-debug-adapter", path.concat { "out", "src", "vsDebugServer.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/json-lsp/init.lua b/lua/mason-registry/index/json-lsp/init.lua new file mode 100644 index 00000000..a1141103 --- /dev/null +++ b/lua/mason-registry/index/json-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "json-lsp", + desc = [[Language Server Protocol implementation for JSON.]], + homepage = "https://github.com/microsoft/vscode-json-languageservice", + languages = { Pkg.Lang.JSON }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "vscode-langservers-extracted", bin = { "vscode-json-language-server" } }, +} diff --git a/lua/mason-registry/index/json-to-struct/init.lua b/lua/mason-registry/index/json-to-struct/init.lua new file mode 100644 index 00000000..e92ca20b --- /dev/null +++ b/lua/mason-registry/index/json-to-struct/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "json-to-struct", + desc = [[A simple command-line tool for generating to struct definitions from JSON]], + homepage = "https://github.com/tmc/json-to-struct", + categories = {}, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/tmc/json-to-struct", bin = { "json-to-struct" } }, +} diff --git a/lua/mason-registry/index/jsonlint/init.lua b/lua/mason-registry/index/jsonlint/init.lua new file mode 100644 index 00000000..d07b8f9e --- /dev/null +++ b/lua/mason-registry/index/jsonlint/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "jsonlint", + desc = [[A pure JavaScript version of the service provided at jsonlint.com.]], + homepage = "https://github.com/zaach/jsonlint", + languages = { + Pkg.Lang.JSON, + }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "jsonlint", bin = { "jsonlint" } }, +} diff --git a/lua/mason-registry/index/jsonnet-language-server/init.lua b/lua/mason-registry/index/jsonnet-language-server/init.lua new file mode 100644 index 00000000..a337957e --- /dev/null +++ b/lua/mason-registry/index/jsonnet-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "jsonnet-language-server", + desc = [[A Language Server Protocol (LSP) server for Jsonnet (https://jsonnet.org)]], + homepage = "https://github.com/grafana/jsonnet-language-server", + languages = { Pkg.Lang.Jsonnet }, + categories = { Pkg.Cat.LSP }, + install = go.packages { "github.com/grafana/jsonnet-language-server", bin = { "jsonnet-language-server" } }, +} diff --git a/lua/mason-registry/index/julia-lsp/init.lua b/lua/mason-registry/index/julia-lsp/init.lua new file mode 100644 index 00000000..d3dacdfe --- /dev/null +++ b/lua/mason-registry/index/julia-lsp/init.lua @@ -0,0 +1,86 @@ +local Pkg = require "mason-core.package" +local path = require "mason-core.path" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" + +local server_script = [[ +if VERSION < v"1.0.0" + error("julia language server only works with julia 1.0.0+") +end + +import Pkg +version_specific_env_path = joinpath(@__DIR__, "scripts", "environments", "languageserver", "v$(VERSION.major).$(VERSION.minor)") +if isdir(version_specific_env_path) + Pkg.activate(version_specific_env_path) +else + Pkg.activate(joinpath(@__DIR__, "scripts", "environments", "languageserver", "fallback")) +end + +using LanguageServer, SymbolServer, Pkg + +OLD_DEPOT_PATH = ARGS[1] +ENV_PATH = ARGS[2] + +runserver( + stdin, + stdout, + ENV_PATH, + OLD_DEPOT_PATH, + nothing, + ENV["SYMBOLSTORE_PATH"] +) +]] + +return Pkg.new { + name = "julia-lsp", + desc = [[An implementation of the Microsoft Language Server Protocol for the Julia language.]], + homepage = "https://github.com/julia-vscode/LanguageServer.jl", + languages = { Pkg.Lang.Julia }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + std.ensure_executable("julia", { help_url = "https://julialang.org/downloads/" }) + + ctx.fs:mkdir "vscode-package" + ctx:chdir("vscode-package", function() + github + .unzip_release_file({ + repo = "julia-vscode/julia-vscode", + asset_file = function(version) + local version_number = version:gsub("^v", "") + return ("language-julia-%s.vsix"):format(version_number) + end, + }) + .with_receipt() + end) + + ctx.fs:rename( + path.concat { + "vscode-package", + "extension", + "scripts", + }, + "scripts" + ) + ctx.fs:rmrf "vscode-package" + + ctx.fs:write_file("nvim-lsp.jl", server_script) + ctx:link_bin( + "julia-lsp", + ctx:write_shell_exec_wrapper( + "julia-lsp", + ("julia --startup-file=no --history-file=no --depwarn=no %q"):format(path.concat { + ctx.package:get_install_path(), + "nvim-lsp.jl", + }), + { + SYMBOLSTORE_PATH = path.concat { ctx.package:get_install_path(), "symbolstorev5" }, + JULIA_DEPOT_PATH = path.concat { ctx.package:get_install_path(), "lsdepot" }, + JULIA_LOAD_PATH = platform.is.win and ";" or ":", + } + ) + ) + end, +} diff --git a/lua/mason-registry/index/kotlin-debug-adapter/init.lua b/lua/mason-registry/index/kotlin-debug-adapter/init.lua new file mode 100644 index 00000000..2e7aa17c --- /dev/null +++ b/lua/mason-registry/index/kotlin-debug-adapter/init.lua @@ -0,0 +1,30 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local path = require "mason-core.path" + +return Pkg.new { + name = "kotlin-debug-adapter", + desc = [[Kotlin/JVM debugging for any editor/IDE using the Debug Adapter Protocol]], + homepage = "https://github.com/fwcd/kotlin-debug-adapter", + languages = { Pkg.Lang.Kotlin }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "fwcd/kotlin-debug-adapter", + asset_file = "adapter.zip", + }) + .with_receipt() + ctx:link_bin( + "kotlin-debug-adapter", + path.concat { + "adapter", + "bin", + platform.is.win and "kotlin-debug-adapter.bat" or "kotlin-debug-adapter", + } + ) + end, +} diff --git a/lua/mason-registry/index/kotlin-language-server/init.lua b/lua/mason-registry/index/kotlin-language-server/init.lua new file mode 100644 index 00000000..77c6cb6d --- /dev/null +++ b/lua/mason-registry/index/kotlin-language-server/init.lua @@ -0,0 +1,30 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local path = require "mason-core.path" + +return Pkg.new { + name = "kotlin-language-server", + desc = [[Kotlin code completion, linting and more for any editor/IDE using the Language Server Protocol]], + homepage = "https://github.com/fwcd/kotlin-language-server", + languages = { Pkg.Lang.Kotlin }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "fwcd/kotlin-language-server", + asset_file = "server.zip", + }) + .with_receipt() + ctx:link_bin( + "kotlin-language-server", + path.concat { + "server", + "bin", + platform.is.win and "kotlin-language-server.bat" or "kotlin-language-server", + } + ) + end, +} diff --git a/lua/mason-registry/index/ktlint/init.lua b/lua/mason-registry/index/ktlint/init.lua new file mode 100644 index 00000000..ef346dc0 --- /dev/null +++ b/lua/mason-registry/index/ktlint/init.lua @@ -0,0 +1,40 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local path = require "mason-core.path" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "ktlint", + desc = [[An anti-bikeshedding Kotlin linter with built-in formatter]], + homepage = "https://github.com/pinterest/ktlint", + languages = { Pkg.Lang.Kotlin }, + categories = { Pkg.Cat.Formatter, Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "pinterest/ktlint", + asset_file = "ktlint", + out_file = "ktlint", + }) + .with_receipt() + + platform.when { + unix = function() + std.chmod("+x", { "ktlint" }) + ctx:link_bin("ktlint", "ktlint") + end, + win = function() + ctx:link_bin( + "ktlint", + ctx:write_shell_exec_wrapper( + "ktlint", + ("java -jar %q"):format(path.concat { ctx.package:get_install_path(), "ktlint" }) + ) + ) + end, + } + end, +} diff --git a/lua/mason-registry/index/latexindent/init.lua b/lua/mason-registry/index/latexindent/init.lua new file mode 100644 index 00000000..c08bf7e9 --- /dev/null +++ b/lua/mason-registry/index/latexindent/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local std = require "mason-core.managers.std" +local _ = require "mason-core.functional" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "latexindent", + desc = _.dedent [[ + latexindent.pl is a perl script to beautify/tidy/format/indent (add horizontal leading space to) code within + environments, commands, after headings and within special code blocks. + ]], + homepage = "https://github.com/cmhughes/latexindent.pl", + languages = { Pkg.Lang.LaTeX }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "cmhughes/latexindent.pl", + out_file = platform.is.win and "latexindent.exe" or "latexindent", + asset_file = coalesce( + when(platform.is.mac_x64, "latexindent-macos"), + when(platform.is.mac_arm64, "latexindent-macos"), + when(platform.is.linux_x64_gnu, "latexindent-linux"), + when(platform.is.win_x64, "latexindent.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "latexindent" }) + ctx:link_bin("latexindent", platform.is.win and "latexindent.exe" or "latexindent") + end, +} diff --git a/lua/mason-registry/index/lelwel/init.lua b/lua/mason-registry/index/lelwel/init.lua new file mode 100644 index 00000000..f6b416e5 --- /dev/null +++ b/lua/mason-registry/index/lelwel/init.lua @@ -0,0 +1,14 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "lelwel", + desc = [[LL(1) parser generator for Rust]], + homepage = "https://github.com/0x2a-42/lelwel", + languages = { Pkg.Lang.Lelwel }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("lelwel", { + features = "lsp,cli", + bin = { "lelwel-ls", "llw" }, + }), +} diff --git a/lua/mason-registry/index/lemminx/init.lua b/lua/mason-registry/index/lemminx/init.lua new file mode 100644 index 00000000..ba92561b --- /dev/null +++ b/lua/mason-registry/index/lemminx/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "lemminx", + desc = [[XML Language Server]], + homepage = "https://github.com/eclipse/lemminx", + languages = { Pkg.Lang.XML }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.unzip_release_file { + repo = "redhat-developer/vscode-xml", + asset_file = coalesce( + when(platform.is.mac, "lemminx-osx-x86_64.zip"), + when(platform.is.linux_x64, "lemminx-linux.zip"), + when(platform.is.win, "lemminx-win32.zip") + ), + } + source.with_receipt() + local unzipped_binary = _.gsub("%.zip$", "", source.asset_file) + ctx.fs:rename( + platform.is.win and ("%s.exe"):format(unzipped_binary) or unzipped_binary, + platform.is.win and "lemminx.exe" or "lemminx" + ) + ctx:link_bin("lemminx", platform.is.win and "lemminx.exe" or "lemminx") + end, +} diff --git a/lua/mason-registry/index/lemmy-help/init.lua b/lua/mason-registry/index/lemmy-help/init.lua new file mode 100644 index 00000000..db593590 --- /dev/null +++ b/lua/mason-registry/index/lemmy-help/init.lua @@ -0,0 +1,45 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "lemmy-help", + desc = [[Every one needs help, so lemmy-help you! A CLI to generate vim/nvim help doc from emmylua]], + homepage = "https://github.com/numToStr/lemmy-help", + categories = {}, + languages = { Pkg.Lang.Lua }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "numToStr/lemmy-help" + local asset_file = _.coalesce( + _.when(platform.is.mac, "lemmy-help-x86_64-apple-darwin.tar.gz"), + _.when(platform.is.linux_x64_gnu, "lemmy-help-x86_64-unknown-linux-gnu.tar.gz"), + _.when(platform.is.linux_x64, "lemmy-help-x86_64-unknown-linux-musl.tar.gz"), + _.when(platform.is.linux_arm64_gnu, "lemmy-help-aarch64-unknown-linux-gnu.tar.gz"), + _.when(platform.is.linux_arm64, "lemmy-help-aarch64-unknown-linux-musl.tar.gz"), + _.when(platform.is.win_x64, "lemmy-help-x86_64-pc-windows-msvc.zip") + ) + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + asset_file = asset_file, + }) + .with_receipt() + ctx:link_bin("lemmy-help", "lemmy-help") + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = asset_file, + }) + .with_receipt() + ctx:link_bin("lemmy-help", "lemmy-help.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/ltex-ls/init.lua b/lua/mason-registry/index/ltex-ls/init.lua new file mode 100644 index 00000000..e2cace82 --- /dev/null +++ b/lua/mason-registry/index/ltex-ls/init.lua @@ -0,0 +1,75 @@ +local Pkg = require "mason-core.package" +local a = require "mason-core.async" +local installer = require "mason-core.installer" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +local repo = "valentjn/ltex-ls" +---@async +local function download_platform_dependent() + local ctx = installer.context() + local source = platform.when { + unix = function() + return github.untargz_release_file { + repo = repo, + asset_file = function(version) + local target = coalesce( + when(platform.is.mac, "ltex-ls-%s-mac-x64.tar.gz"), + when(platform.is.linux_x64, "ltex-ls-%s-linux-x64.tar.gz") + ) + return target and target:format(version) + end, + } + end, + win = function() + return github.unzip_release_file { + repo = repo, + asset_file = function(version) + local target = coalesce(when(platform.is.win_x64, "ltex-ls-%s-windows-x64.zip")) + return target and target:format(version) + end, + } + end, + } + source.with_receipt() + ctx.fs:rename(("ltex-ls-%s"):format(source.release), "ltex-ls") +end + +local function download_platform_independent() + local ctx = installer.context() + local source = github.untargz_release_file { + repo = repo, + asset_file = _.format "ltex-ls-%s.tar.gz", + } + source.with_receipt() + ctx.fs:rename(("ltex-ls-%s"):format(source.release), "ltex-ls") +end + +return Pkg.new { + name = "ltex-ls", + desc = _.dedent [[ + LTeX Language Server: LSP language server for LanguageTool 🔍✔️ with support for LaTeX 🎓, Markdown 📝, and + others. + ]], + homepage = "https://valentjn.github.io/ltex/", + languages = { Pkg.Lang.Text, Pkg.Lang.Markdown, Pkg.Lang.LaTeX }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + if vim.in_fast_event() then + a.scheduler() + end + if vim.fn.executable "java" == 1 then + download_platform_independent() + else + download_platform_dependent() + end + ctx:link_bin("ltex-ls", path.concat { "ltex-ls", "bin", platform.is.win and "ltex-ls.bat" or "ltex-ls" }) + ctx:link_bin("ltex-cli", path.concat { "ltex-ls", "bin", platform.is.win and "ltex-cli.bat" or "ltex-cli" }) + end, +} diff --git a/lua/mason-registry/index/lua-language-server/init.lua b/lua/mason-registry/index/lua-language-server/init.lua new file mode 100644 index 00000000..1c710935 --- /dev/null +++ b/lua/mason-registry/index/lua-language-server/init.lua @@ -0,0 +1,64 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "lua-language-server", + desc = [[A language server that offers Lua language support - programmed in Lua.]], + languages = { Pkg.Lang.Lua }, + categories = { Pkg.Cat.LSP }, + homepage = "https://github.com/LuaLS/lua-language-server", + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "LuaLS/lua-language-server" + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + asset_file = coalesce( + when(platform.is.mac_x64, _.format "lua-language-server-%s-darwin-x64.tar.gz"), + when(platform.is.mac_arm64, _.format "lua-language-server-%s-darwin-arm64.tar.gz"), + when(platform.is.linux_x64_gnu, _.format "lua-language-server-%s-linux-x64.tar.gz"), + when(platform.is.linux_arm64_gnu, _.format "lua-language-server-%s-linux-arm64.tar.gz") + ), + }) + .with_receipt() + + ctx:link_bin( + "lua-language-server", + ctx:write_exec_wrapper( + "lua-language-server", + path.concat { + "bin", + "lua-language-server", + } + ) + ) + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = coalesce( + when(platform.is.win_x64, _.format "lua-language-server-%s-win32-x64.zip"), + when(platform.is.win_x86, _.format "lua-language-server-%s-win32-ia32.zip") + ), + }) + .with_receipt() + ctx:link_bin( + "lua-language-server", + path.concat { + "bin", + "lua-language-server.exe", + } + ) + end, + } + end, +} diff --git a/lua/mason-registry/index/luacheck/init.lua b/lua/mason-registry/index/luacheck/init.lua new file mode 100644 index 00000000..f4fae381 --- /dev/null +++ b/lua/mason-registry/index/luacheck/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local luarocks = require "mason-core.managers.luarocks" + +return Pkg.new { + name = "luacheck", + desc = [[A tool for linting and static analysis of Lua code.]], + homepage = "https://github.com/mpeterv/luacheck", + languages = { Pkg.Lang.Lua }, + categories = { Pkg.Cat.Linter }, + install = luarocks.package("luacheck", { + bin = { "luacheck" }, + }), +} diff --git a/lua/mason-registry/index/luaformatter/init.lua b/lua/mason-registry/index/luaformatter/init.lua new file mode 100644 index 00000000..f4e4c888 --- /dev/null +++ b/lua/mason-registry/index/luaformatter/init.lua @@ -0,0 +1,14 @@ +local Pkg = require "mason-core.package" +local luarocks = require "mason-core.managers.luarocks" + +return Pkg.new { + name = "luaformatter", + desc = [[Code formatter for Lua]], + homepage = "https://github.com/Koihik/LuaFormatter", + languages = { Pkg.Lang.Lua }, + categories = { Pkg.Cat.Formatter }, + install = luarocks.package("luaformatter", { + server = "https://luarocks.org/dev", + bin = { "lua-format" }, + }), +} diff --git a/lua/mason-registry/index/luau-lsp/init.lua b/lua/mason-registry/index/luau-lsp/init.lua new file mode 100644 index 00000000..94324271 --- /dev/null +++ b/lua/mason-registry/index/luau-lsp/init.lua @@ -0,0 +1,30 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "luau-lsp", + desc = [[An implementation of a language server for the Luau programming language.]], + languages = { Pkg.Lang.Luau }, + categories = { Pkg.Cat.LSP }, + homepage = "https://github.com/JohnnyMorganz/luau-lsp", + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "JohnnyMorganz/luau-lsp", + asset_file = coalesce( + when(platform.is.mac, "luau-lsp-macos.zip"), + when(platform.is.linux_x64, "luau-lsp-linux.zip"), + when(platform.is.win_x64, "luau-lsp-win64.zip") + ), + }) + .with_receipt() + + ctx:link_bin("luau-lsp", platform.is.win and "luau-lsp.exe" or "luau-lsp") + end, +} diff --git a/lua/mason-registry/index/markdownlint/init.lua b/lua/mason-registry/index/markdownlint/init.lua new file mode 100644 index 00000000..eb63ec71 --- /dev/null +++ b/lua/mason-registry/index/markdownlint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "markdownlint", + desc = [[A Node.js style checker and lint tool for Markdown/CommonMark files]], + homepage = "https://github.com/igorshubovych/markdownlint-cli", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.Linter, Pkg.Cat.Formatter }, + install = npm.packages { "markdownlint-cli", bin = { "markdownlint" } }, +} diff --git a/lua/mason-registry/index/marksman/init.lua b/lua/mason-registry/index/marksman/init.lua new file mode 100644 index 00000000..7d2404dc --- /dev/null +++ b/lua/mason-registry/index/marksman/init.lua @@ -0,0 +1,32 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "marksman", + desc = [[Markdown LSP server providing completion, cross-references, diagnostics, and more.]], + homepage = "https://github.com/artempyanykh/marksman", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "artempyanykh/marksman", + out_file = platform.is.win and "marksman.exe" or "marksman", + asset_file = coalesce( + when(platform.is.mac, "marksman-macos"), + when(platform.is.linux_x64, "marksman-linux"), + when(platform.is.win_x64, "marksman.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "marksman" }) + ctx:link_bin("marksman", platform.is.win and "marksman.exe" or "marksman") + end, +} diff --git a/lua/mason-registry/index/metamath-zero-lsp/init.lua b/lua/mason-registry/index/metamath-zero-lsp/init.lua new file mode 100644 index 00000000..e5fc28b1 --- /dev/null +++ b/lua/mason-registry/index/metamath-zero-lsp/init.lua @@ -0,0 +1,24 @@ +local Pkg = require "mason-core.package" +local git = require "mason-core.managers.git" +local platform = require "mason-core.platform" +local path = require "mason-core.path" + +return Pkg.new { + name = "metamath-zero-lsp", + desc = [[An MM0/MM1 server written in Rust.]], + homepage = "https://github.com/digama0/mm0", + languages = { Pkg.Lang["Metamath Zero"] }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + git.clone({ "https://github.com/digama0/mm0" }).with_receipt() + ctx:chdir("mm0-rs", function() + ctx.spawn.cargo { "build", "--release" } + end) + ctx:link_bin( + "mm0-rs", + path.concat { "mm0-rs", "target", "release", platform.is.win and "mm0-rs.exe" or "mm0-rs" } + ) + end, +} diff --git a/lua/mason-registry/index/misspell/init.lua b/lua/mason-registry/index/misspell/init.lua new file mode 100644 index 00000000..d9ae6f13 --- /dev/null +++ b/lua/mason-registry/index/misspell/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "misspell", + desc = [[Correct commonly misspelled English words in source files]], + homepage = "https://github.com/client9/misspell", + languages = {}, + categories = { Pkg.Cat.Linter }, + install = go.packages { "github.com/client9/misspell/cmd/misspell", bin = { "misspell" } }, +} diff --git a/lua/mason-registry/index/mockdebug/init.lua b/lua/mason-registry/index/mockdebug/init.lua new file mode 100644 index 00000000..4b539a72 --- /dev/null +++ b/lua/mason-registry/index/mockdebug/init.lua @@ -0,0 +1,31 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local git = require "mason-core.managers.git" +local path = require "mason-core.path" +local _ = require "mason-core.functional" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "mockdebug", + desc = _.dedent [[ + Mock Debug simulates a debug adapter. It supports step, continue, breakpoints, exceptions, and variable access + but it is not connected to any real debugger. + ]], + homepage = "https://github.com/microsoft/vscode-mock-debug", + languages = {}, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.tag { repo = "microsoft/vscode-mock-debug" } + source.with_receipt() + git.clone { "https://github.com/microsoft/vscode-mock-debug", version = Optional.of(source.tag) } + ctx.spawn.npm { "install" } + ctx.spawn.npm { "run", "compile" } + ctx.spawn.npm { "install", "--production" } + ctx:link_bin( + "mock-debug-adapter", + ctx:write_node_exec_wrapper("mock-debug-adapter", path.concat { "out", "debugAdapter.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/move-analyzer/init.lua b/lua/mason-registry/index/move-analyzer/init.lua new file mode 100644 index 00000000..e7e15093 --- /dev/null +++ b/lua/mason-registry/index/move-analyzer/init.lua @@ -0,0 +1,16 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "move-analyzer", + desc = [[move-analyzer is a language server implementation for the Move programming language.]], + homepage = "https://github.com/move-language/move", + languages = { Pkg.Lang.Move }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("move-analyzer", { + git = { + url = "https://github.com/move-language/move", + }, + bin = { "move-analyzer" }, + }), +} diff --git a/lua/mason-registry/index/mypy/init.lua b/lua/mason-registry/index/mypy/init.lua new file mode 100644 index 00000000..05f68afd --- /dev/null +++ b/lua/mason-registry/index/mypy/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "mypy", + desc = [[Mypy is a static type checker for Python. ]], + homepage = "https://github.com/python/mypy", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "mypy", bin = { "mypy" } }, +} diff --git a/lua/mason-registry/index/neocmakelsp/init.lua b/lua/mason-registry/index/neocmakelsp/init.lua new file mode 100644 index 00000000..2fe76e44 --- /dev/null +++ b/lua/mason-registry/index/neocmakelsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "neocmakelsp", + desc = [[CMake LSP implementation based on Tower and Tree-sitter]], + homepage = "https://github.com/Decodetalkers/neocmakelsp", + languages = { Pkg.Lang.CMake }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("neocmakelsp", { bin = { "neocmakelsp" } }), +} diff --git a/lua/mason-registry/index/netcoredbg/init.lua b/lua/mason-registry/index/netcoredbg/init.lua new file mode 100644 index 00000000..10a5c1ae --- /dev/null +++ b/lua/mason-registry/index/netcoredbg/init.lua @@ -0,0 +1,42 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local path = require "mason-core.path" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "netcoredbg", + desc = [[NetCoreDbg is a managed code debugger with MI interface for CoreCLR.]], + homepage = "https://github.com/Samsung/netcoredbg", + languages = { Pkg.Lang[".NET"], Pkg.Lang["C#"], Pkg.Lang["F#"] }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + platform.when { + unix = function() + github + .untargz_release_file({ + repo = "Samsung/netcoredbg", + asset_file = _.coalesce( + _.when(platform.is.mac, "netcoredbg-osx-amd64.tar.gz"), + _.when(platform.is.linux_x64, "netcoredbg-linux-amd64.tar.gz"), + _.when(platform.is.linux_arm64, "netcoredbg-linux-arm64.tar.gz") + ), + }) + .with_receipt() + ctx.fs:rename("netcoredbg", "build") + ctx:link_bin("netcoredbg", ctx:write_exec_wrapper("netcoredbg", path.concat { "build", "netcoredbg" })) + end, + win = function() + github + .unzip_release_file({ + repo = "Samsung/netcoredbg", + asset_file = _.when(platform.is.win_x64, "netcoredbg-win64.zip"), + }) + .with_receipt() + ctx:link_bin("netcoredbg", path.concat { "netcoredbg", "netcoredbg.exe" }) + end, + } + end, +} diff --git a/lua/mason-registry/index/nginx-language-server/init.lua b/lua/mason-registry/index/nginx-language-server/init.lua new file mode 100644 index 00000000..88512cdc --- /dev/null +++ b/lua/mason-registry/index/nginx-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "nginx-language-server", + desc = [[A language server for nginx configuration files.]], + homepage = "https://github.com/pappasam/nginx-language-server", + languages = { Pkg.Lang.Nginx }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "nginx-language-server", bin = { "nginx-language-server" } }, +} diff --git a/lua/mason-registry/index/nickel-lang-lsp/init.lua b/lua/mason-registry/index/nickel-lang-lsp/init.lua new file mode 100644 index 00000000..8e0cc510 --- /dev/null +++ b/lua/mason-registry/index/nickel-lang-lsp/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "nickel-lang-lsp", + desc = _.dedent [[ + The Nickel Language Server (NLS) is a language server for the Nickel programming language. NLS offers error + messages, type hints, and auto-completion right in your favorite LSP-enabled editor. + ]], + homepage = "https://nickel-lang.org/", + languages = { Pkg.Lang.Nickel }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("nickel-lang-lsp", { + bin = { "nls" }, + }), +} diff --git a/lua/mason-registry/index/nil/init.lua b/lua/mason-registry/index/nil/init.lua new file mode 100644 index 00000000..708022a4 --- /dev/null +++ b/lua/mason-registry/index/nil/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "nil", + desc = [[Language Server for Nix]], + homepage = "https://github.com/oxalica/nil", + languages = { Pkg.Lang.Nix }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("nil", { + git = { + url = "https://github.com/oxalica/nil", + tag = true, + }, + bin = { "nil" }, + }), +} diff --git a/lua/mason-registry/index/nimlsp/init.lua b/lua/mason-registry/index/nimlsp/init.lua new file mode 100644 index 00000000..ceb759af --- /dev/null +++ b/lua/mason-registry/index/nimlsp/init.lua @@ -0,0 +1,22 @@ +local Pkg = require "mason-core.package" +local git = require "mason-core.managers.git" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "nimlsp", + desc = [[Language Server Protocol implementation for Nim]], + homepage = "https://github.com/PMunch/nimlsp", + languages = { Pkg.Lang.Nim }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.tag { repo = "PMunch/nimlsp" } + source.with_receipt() + git.clone { "https://github.com/PMunch/nimlsp", version = Optional.of(source.tag) } + ctx.spawn.nimble { "build", "-y", "--localdeps" } + ctx:link_bin("nimlsp", platform.is.win and "nimlsp.exe" or "nimlsp") + end, +} diff --git a/lua/mason-registry/index/node-debug2-adapter/init.lua b/lua/mason-registry/index/node-debug2-adapter/init.lua new file mode 100644 index 00000000..4487b6a4 --- /dev/null +++ b/lua/mason-registry/index/node-debug2-adapter/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local git = require "mason-core.managers.git" +local _ = require "mason-core.functional" +local path = require "mason-core.path" +local Optional = require "mason-core.optional" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "node-debug2-adapter", + desc = [[A debug adapter that supports debugging Node via the Chrome Debugging Protocol. No longer maintained.]], + homepage = "https://github.com/microsoft/vscode-node-debug2", + languages = { Pkg.Lang.JavaScript, Pkg.Lang.TypeScript }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.tag { repo = "microsoft/vscode-node-debug2" } + source.with_receipt() + git.clone { "https://github.com/microsoft/vscode-node-debug2", version = Optional.of(source.tag) } + ctx.spawn.npm { "install" } + local node_env = platform + .get_node_version() + :map(_.cond { + { _.prop_satisfies(_.gte(18), "major"), _.always { NODE_OPTIONS = "--no-experimental-fetch" } }, + { _.T, _.always {} }, + }) + :get_or_else {} + ctx.spawn.npm { "run", "build", env = node_env } + ctx.spawn.npm { "install", "--production" } + ctx:link_bin( + "node-debug2-adapter", + ctx:write_node_exec_wrapper("node-debug2-adapter", path.concat { "out", "src", "nodeDebug.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/nxls/init.lua b/lua/mason-registry/index/nxls/init.lua new file mode 100644 index 00000000..fb955b5e --- /dev/null +++ b/lua/mason-registry/index/nxls/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "nxls", + desc = [[A language server that provides code completion and more for Nx workspaces.]], + homepage = "https://github.com/nrwl/nx-console/tree/master/apps/nxls", + languages = { + Pkg.Lang.JSON, + }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "nxls", bin = { "nxls" } }, +} diff --git a/lua/mason-registry/index/ocaml-lsp/init.lua b/lua/mason-registry/index/ocaml-lsp/init.lua new file mode 100644 index 00000000..b1d02807 --- /dev/null +++ b/lua/mason-registry/index/ocaml-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local opam = require "mason-core.managers.opam" + +return Pkg.new { + name = "ocaml-lsp", + desc = [[OCaml Language Server Protocol implementation]], + homepage = "https://github.com/ocaml/ocaml-lsp", + languages = { Pkg.Lang.OCaml }, + categories = { Pkg.Cat.LSP }, + install = opam.packages { "ocaml-lsp-server", bin = { "ocamllsp" } }, +} diff --git a/lua/mason-registry/index/ocamlformat/init.lua b/lua/mason-registry/index/ocamlformat/init.lua new file mode 100644 index 00000000..e24f33a9 --- /dev/null +++ b/lua/mason-registry/index/ocamlformat/init.lua @@ -0,0 +1,15 @@ +local _ = require "mason-core.functional" +local Pkg = require "mason-core.package" +local opam = require "mason-core.managers.opam" + +return Pkg.new { + name = "ocamlformat", + desc = _.dedent [[ + ocamlformat is a tool for formatting OCaml code. It automatically adjusts the layout of your code to follow the + recommended style guidelines, making it easier to read and understand. + ]], + homepage = "https://github.com/ocaml-ppx/ocamlformat", + languages = { Pkg.Lang.OCaml }, + categories = { Pkg.Cat.Formatter }, + install = opam.packages { "ocamlformat", bin = { "ocamlformat" } }, +} diff --git a/lua/mason-registry/index/omnisharp-mono/init.lua b/lua/mason-registry/index/omnisharp-mono/init.lua new file mode 100644 index 00000000..a09ee7e5 --- /dev/null +++ b/lua/mason-registry/index/omnisharp-mono/init.lua @@ -0,0 +1,48 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "omnisharp-mono", + desc = _.dedent [[ + OmniSharp language server based on Roslyn workspaces. This version of Omnisharp requires Mono to be installed on + Linux & macOS. + ]], + homepage = "https://github.com/OmniSharp/omnisharp-roslyn", + languages = { Pkg.Lang["C#"] }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + platform.when { + unix = function() + github + .untargz_release_file({ + repo = "OmniSharp/omnisharp-roslyn", + asset_file = coalesce( + when(platform.is.mac, "omnisharp-osx.tar.gz"), + when(platform.is.linux_x64, "omnisharp-linux-x64.tar.gz"), + when(platform.is.linux_x86, "omnisharp-linux-x86.tar.gz") + ), + }) + .with_receipt() + ctx:link_bin("omnisharp-mono", ctx:write_exec_wrapper("omnisharp-mono", "run")) + end, + win = function() + github + .unzip_release_file({ + repo = "OmniSharp/omnisharp-roslyn", + asset_file = coalesce( + when(platform.is.win_x64, "omnisharp-win-x64.zip"), + when(platform.is.win_x86, "omnisharp-win-x86.zip") + ), + }) + .with_receipt() + ctx:link_bin("omnisharp-mono", "OmniSharp.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/omnisharp/init.lua b/lua/mason-registry/index/omnisharp/init.lua new file mode 100644 index 00000000..cb1164a3 --- /dev/null +++ b/lua/mason-registry/index/omnisharp/init.lua @@ -0,0 +1,46 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "omnisharp", + desc = _.dedent [[ + OmniSharp language server based on Roslyn workspaces. This version of Omnisharp requires dotnet (.NET 6.0) to be + installed. + ]], + homepage = "https://github.com/OmniSharp/omnisharp-roslyn", + languages = { Pkg.Lang["C#"] }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "OmniSharp/omnisharp-roslyn", + asset_file = coalesce( + when(platform.is.mac_x64, "omnisharp-osx-x64-net6.0.zip"), + when(platform.is.mac_arm64, "omnisharp-osx-arm64-net6.0.zip"), + when(platform.is.linux_x64, "omnisharp-linux-x64-net6.0.zip"), + when(platform.is.linux_arm64, "omnisharp-linux-arm64-net6.0.zip"), + when(platform.is.win_x64, "omnisharp-win-x64-net6.0.zip"), + when(platform.is.win_arm64, "omnisharp-win-arm64-net6.0.zip") + ), + }) + .with_receipt() + + ctx:link_bin( + "omnisharp", + ctx:write_shell_exec_wrapper( + "omnisharp", + ("dotnet %q"):format(path.concat { + ctx.package:get_install_path(), + "OmniSharp.dll", + }) + ) + ) + end, +} diff --git a/lua/mason-registry/index/opencl-language-server/init.lua b/lua/mason-registry/index/opencl-language-server/init.lua new file mode 100644 index 00000000..665a5c55 --- /dev/null +++ b/lua/mason-registry/index/opencl-language-server/init.lua @@ -0,0 +1,44 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "opencl-language-server", + desc = [[Provides an OpenCL kernel diagnostics]], + homepage = "https://github.com/Galarius/opencl-language-server", + languages = { Pkg.Lang.OpenCL }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + platform.when { + unix = function() + local asset_file = coalesce( + when(platform.is.mac, "opencl-language-server-darwin-x86_64.tar.gz"), + when(platform.is.linux_x64, "opencl-language-server-linux-x86_64.tar.gz") + ) + github + .untargz_release_file({ + repo = "Galarius/opencl-language-server", + asset_file = asset_file, + }) + .with_receipt() + end, + win = function() + github + .unzip_release_file({ + repo = "Galarius/opencl-language-server", + asset_file = "opencl-language-server-win32-x86_64.zip", + }) + .with_receipt() + end, + } + ctx:link_bin( + "opencl-language-server", + platform.is.win and "opencl-language-server.exe" or "opencl-language-server" + ) + end, +} diff --git a/lua/mason-registry/index/openscad-lsp/init.lua b/lua/mason-registry/index/openscad-lsp/init.lua new file mode 100644 index 00000000..2caf582d --- /dev/null +++ b/lua/mason-registry/index/openscad-lsp/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "openscad-lsp", + desc = [[Language Server Protocol implementation for OpenSCAD, written in Rust.]], + homepage = "https://github.com/Leathong/openscad-LSP", + languages = { Pkg.Lang.OpenSCAD }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("openscad-lsp", { + bin = { "openscad-lsp" }, + }), +} diff --git a/lua/mason-registry/index/perlnavigator/init.lua b/lua/mason-registry/index/perlnavigator/init.lua new file mode 100644 index 00000000..654ecb94 --- /dev/null +++ b/lua/mason-registry/index/perlnavigator/init.lua @@ -0,0 +1,23 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" +local path = require "mason-core.path" + +return Pkg.new { + name = "perlnavigator", + desc = [[Perl Language Server that includes perl critic and code navigation]], + homepage = "https://github.com/bscan/PerlNavigator", + languages = { Pkg.Lang.Perl }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + npm.packages { "perlnavigator-server" }() + ctx:link_bin( + "perlnavigator", + ctx:write_node_exec_wrapper( + "perlnavigator", + path.concat { "node_modules", "perlnavigator-server", "out", "server.js" } + ) + ) + end, +} diff --git a/lua/mason-registry/index/php-cs-fixer/init.lua b/lua/mason-registry/index/php-cs-fixer/init.lua new file mode 100644 index 00000000..84dd0078 --- /dev/null +++ b/lua/mason-registry/index/php-cs-fixer/init.lua @@ -0,0 +1,37 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "php-cs-fixer", + desc = _.dedent [[ + The PHP Coding Standards Fixer (PHP CS Fixer) tool fixes your code to follow standards; whether you want to + follow PHP coding standards as defined in the PSR-1, PSR-2, etc., or other community driven ones like the + Symfony one. You can also define your (team's) style through configuration.') + ]], + homepage = "https://github.com/FriendsOfPHP/PHP-CS-Fixer", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "FriendsOfPHP/PHP-CS-Fixer", + asset_file = "php-cs-fixer.phar", + out_file = platform.is.win and "php-cs-fixer.phar" or "php-cs-fixer", + }) + .with_receipt() + platform.when { + unix = function() + std.chmod("+x", { "php-cs-fixer" }) + ctx:link_bin("php-cs-fixer", "php-cs-fixer") + end, + win = function() + ctx:link_bin("php-cs-fixer", ctx:write_php_exec_wrapper("php-cs-fixer", "php-cs-fixer.phar")) + end, + } + end, +} diff --git a/lua/mason-registry/index/php-debug-adapter/init.lua b/lua/mason-registry/index/php-debug-adapter/init.lua new file mode 100644 index 00000000..d4350c91 --- /dev/null +++ b/lua/mason-registry/index/php-debug-adapter/init.lua @@ -0,0 +1,27 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local path = require "mason-core.path" + +return Pkg.new { + name = "php-debug-adapter", + desc = [[PHP Debug Adapter 🐞⛔]], + homepage = "https://github.com/xdebug/vscode-php-debug", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "xdebug/vscode-php-debug", + asset_file = _.compose(_.format "php-debug-%s.vsix", _.gsub("^v", "")), + }) + .with_receipt() + ctx.fs:rmrf(path.concat { "extension", "images" }) + ctx:link_bin( + "php-debug-adapter", + ctx:write_node_exec_wrapper("php-debug-adapter", path.concat { "extension", "out", "phpDebug.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/phpactor/init.lua b/lua/mason-registry/index/phpactor/init.lua new file mode 100644 index 00000000..99f0b5f5 --- /dev/null +++ b/lua/mason-registry/index/phpactor/init.lua @@ -0,0 +1,29 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local composer = require "mason-core.managers.composer" +local git = require "mason-core.managers.git" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local Optional = require "mason-core.optional" +local path = require "mason-core.path" + +return Pkg.new { + name = "phpactor", + desc = _.dedent [[ + Phpactor is an intelligent Completion and Refactoring tool for PHP which is available over it’s own RPC protocol + and as a Language Server. + ]], + homepage = "https://phpactor.readthedocs.io/en/master/", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + assert(platform.is.unix, "phpactor only supports UNIX environments.") + local source = github.tag { repo = "phpactor/phpactor" } + source.with_receipt() + git.clone { "https://github.com/phpactor/phpactor", version = Optional.of(source.tag) } + composer.install() + ctx:link_bin("phpactor", path.concat { "bin", "phpactor" }) + end, +} diff --git a/lua/mason-registry/index/phpcbf/init.lua b/lua/mason-registry/index/phpcbf/init.lua new file mode 100644 index 00000000..6dd062f5 --- /dev/null +++ b/lua/mason-registry/index/phpcbf/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "phpcbf", + desc = [[phpcbf automatically corrects coding standard violations that would be detected by phpcs.]], + homepage = "https://github.com/squizlabs/PHP_CodeSniffer", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "squizlabs/PHP_CodeSniffer", + asset_file = "phpcbf.phar", + out_file = platform.is.win and "phpcbf.phar" or "phpcbf", + }) + .with_receipt() + platform.when { + unix = function() + std.chmod("+x", { "phpcbf" }) + ctx:link_bin("phpcbf", "phpcbf") + end, + win = function() + ctx:link_bin("phpcbf", ctx:write_php_exec_wrapper("phpcbf", "phpcbf.phar")) + end, + } + end, +} diff --git a/lua/mason-registry/index/phpcs/init.lua b/lua/mason-registry/index/phpcs/init.lua new file mode 100644 index 00000000..41f82f7d --- /dev/null +++ b/lua/mason-registry/index/phpcs/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "phpcs", + desc = [[phpcs tokenizes PHP, JavaScript and CSS files to detect violations of a defined standard.]], + homepage = "https://github.com/squizlabs/PHP_CodeSniffer", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "squizlabs/PHP_CodeSniffer", + asset_file = "phpcs.phar", + out_file = platform.is.win and "phpcs.phar" or "phpcs", + }) + .with_receipt() + platform.when { + unix = function() + std.chmod("+x", { "phpcs" }) + ctx:link_bin("phpcs", "phpcs") + end, + win = function() + ctx:link_bin("phpcs", ctx:write_php_exec_wrapper("phpcs", "phpcs.phar")) + end, + } + end, +} diff --git a/lua/mason-registry/index/phpmd/init.lua b/lua/mason-registry/index/phpmd/init.lua new file mode 100644 index 00000000..4543711f --- /dev/null +++ b/lua/mason-registry/index/phpmd/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "phpmd", + desc = _.dedent [[ + PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD. + PHPMD can be seen as an user friendly frontend application for the raw metrics stream measured by PHP Depend. + ]], + homepage = "https://github.com/phpmd/phpmd", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "phpmd/phpmd", + asset_file = "phpmd.phar", + out_file = platform.is.win and "phpmd.phar" or "phpmd", + }) + .with_receipt() + platform.when { + unix = function() + std.chmod("+x", { "phpmd" }) + ctx:link_bin("phpmd", "phpmd") + end, + win = function() + ctx:link_bin("phpmd", ctx:write_php_exec_wrapper("phpmd", "phpmd.phar")) + end, + } + end, +} diff --git a/lua/mason-registry/index/phpstan/init.lua b/lua/mason-registry/index/phpstan/init.lua new file mode 100644 index 00000000..688bd75a --- /dev/null +++ b/lua/mason-registry/index/phpstan/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local platform = require "mason-core.platform" +local path = require "mason-core.path" + +return Pkg.new { + name = "phpstan", + desc = _.dedent [[ + PHP Static Analysis Tool - discover bugs in your code without running it! + ]], + homepage = "https://github.com/phpstan/phpstan", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "phpstan/phpstan", + asset_file = "phpstan.phar", + out_file = platform.is.win and "phpstan.phar" or "phpstan", + }) + .with_receipt() + platform.when { + unix = function() + std.chmod("+x", { "phpstan" }) + ctx:link_bin("phpstan", "phpstan") + end, + win = function() + ctx:link_bin("phpstan", ctx:write_php_exec_wrapper("phpstan", "phpstan.phar")) + end, + } + end, +} diff --git a/lua/mason-registry/index/pint/init.lua b/lua/mason-registry/index/pint/init.lua new file mode 100644 index 00000000..559434d5 --- /dev/null +++ b/lua/mason-registry/index/pint/init.lua @@ -0,0 +1,16 @@ +local Pkg = require "mason-core.package" +local composer = require "mason-core.managers.composer" + +return Pkg.new { + name = "pint", + desc = [[Laravel Pint is an opinionated PHP code style fixer for minimalists.]], + homepage = "https://laravel.com/docs/9.x/pint", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.Formatter }, + install = composer.packages { + "laravel/pint", + bin = { + "pint", + }, + }, +} diff --git a/lua/mason-registry/index/powershell-editor-services/init.lua b/lua/mason-registry/index/powershell-editor-services/init.lua new file mode 100644 index 00000000..ab52478d --- /dev/null +++ b/lua/mason-registry/index/powershell-editor-services/init.lua @@ -0,0 +1,21 @@ +local Pkg = require "mason-core.package" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" + +return Pkg.new { + name = "powershell-editor-services", + desc = [[A common platform for PowerShell development support in any editor or application!]], + homepage = "https://github.com/PowerShell/PowerShellEditorServices", + languages = { Pkg.Lang.PowerShell }, + categories = { Pkg.Cat.LSP }, + ---@async + install = function() + std.ensure_executable("pwsh", { help_url = "https://github.com/PowerShell/PowerShell#get-powershell" }) + github + .unzip_release_file({ + repo = "PowerShell/PowerShellEditorServices", + asset_file = "PowerShellEditorServices.zip", + }) + .with_receipt() + end, +} diff --git a/lua/mason-registry/index/prettier/init.lua b/lua/mason-registry/index/prettier/init.lua new file mode 100644 index 00000000..04f0bd0f --- /dev/null +++ b/lua/mason-registry/index/prettier/init.lua @@ -0,0 +1,26 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "prettier", + desc = [[Prettier is an opinionated code formatter]], + homepage = "https://prettier.io", + languages = { + Pkg.Lang.JavaScript, + Pkg.Lang.TypeScript, + Pkg.Lang.Flow, + Pkg.Lang.JSX, + Pkg.Lang.JSON, + Pkg.Lang.CSS, + Pkg.Lang.SCSS, + Pkg.Lang.LESS, + Pkg.Lang.HTML, + Pkg.Lang.Vue, + Pkg.Lang.Angular, + Pkg.Lang.GraphQL, + Pkg.Lang.Markdown, + Pkg.Lang.YAML, + }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "prettier", bin = { "prettier" } }, +} diff --git a/lua/mason-registry/index/prettierd/init.lua b/lua/mason-registry/index/prettierd/init.lua new file mode 100644 index 00000000..34a2e0c4 --- /dev/null +++ b/lua/mason-registry/index/prettierd/init.lua @@ -0,0 +1,26 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "prettierd", + desc = [[Prettier, as a daemon, for ludicrous formatting speed]], + homepage = "https://github.com/fsouza/prettierd", + languages = { + Pkg.Lang.JavaScript, + Pkg.Lang.TypeScript, + Pkg.Lang.Flow, + Pkg.Lang.JSX, + Pkg.Lang.JSON, + Pkg.Lang.CSS, + Pkg.Lang.SCSS, + Pkg.Lang.LESS, + Pkg.Lang.HTML, + Pkg.Lang.Vue, + Pkg.Lang.Angular, + Pkg.Lang.GraphQL, + Pkg.Lang.Markdown, + Pkg.Lang.YAML, + }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "@fsouza/prettierd", bin = { "prettierd" } }, +} diff --git a/lua/mason-registry/index/prisma-language-server/init.lua b/lua/mason-registry/index/prisma-language-server/init.lua new file mode 100644 index 00000000..b54cb132 --- /dev/null +++ b/lua/mason-registry/index/prisma-language-server/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "prisma-language-server", + desc = _.dedent [[ + Any editor that is compatible with the Language Server Protocol can create clients that can use the features + provided by this language server. + ]], + homepage = "https://github.com/prisma/language-tools", + languages = { Pkg.Lang.Prisma }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@prisma/language-server", bin = { "prisma-language-server" } }, +} diff --git a/lua/mason-registry/index/proselint/init.lua b/lua/mason-registry/index/proselint/init.lua new file mode 100644 index 00000000..7e919a6c --- /dev/null +++ b/lua/mason-registry/index/proselint/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "proselint", + desc = _.dedent [[ + proselint is a linter for English prose. It places the world's greatest writers and editors by your side, where + they whisper suggestions on how to improve your prose. + ]], + homepage = "https://github.com/amperser/proselint", + languages = { Pkg.Lang.Text, Pkg.Lang.Markdown }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "proselint", bin = { "proselint" } }, +} diff --git a/lua/mason-registry/index/prosemd-lsp/init.lua b/lua/mason-registry/index/prosemd-lsp/init.lua new file mode 100644 index 00000000..4e4f7b8e --- /dev/null +++ b/lua/mason-registry/index/prosemd-lsp/init.lua @@ -0,0 +1,32 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "prosemd-lsp", + desc = [[An experimental proofreading and linting language server for markdown files ✍️]], + homepage = "https://github.com/kitten/prosemd-lsp", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "kitten/prosemd-lsp", + out_file = platform.is.win and "prosemd-lsp.exe" or "prosemd-lsp", + asset_file = coalesce( + when(platform.is.mac, "prosemd-lsp-macos"), + when(platform.is.linux_x64_gnu, "prosemd-lsp-linux"), + when(platform.is.win_x64, "prosemd-lsp-windows.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "prosemd-lsp" }) + ctx:link_bin("prosemd-lsp", platform.is.win and "prosemd-lsp.exe" or "prosemd-lsp") + end, +} diff --git a/lua/mason-registry/index/protolint/init.lua b/lua/mason-registry/index/protolint/init.lua new file mode 100644 index 00000000..6830c6ea --- /dev/null +++ b/lua/mason-registry/index/protolint/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "protolint", + desc = [[protolint is the pluggable linting/fixing utility for Protocol Buffer files (proto2+proto3)]], + homepage = "https://github.com/yoheimuta/protolint", + categories = { Pkg.Cat.Linter }, + languages = { Pkg.Lang.Protobuf }, + install = function(ctx) + ---@param template_string string + local function release_file(template_string) + return _.compose(_.format(template_string), _.gsub("^v", "")) + end + + github + .untargz_release_file({ + repo = "yoheimuta/protolint", + asset_file = coalesce( + when(platform.is.mac_arm64, release_file "protolint_%s_Darwin_arm64.tar.gz"), + when(platform.is.mac_x64, release_file "protolint_%s_Darwin_x86_64.tar.gz"), + when(platform.is.linux_arm64, release_file "protolint_%s_Linux_arm64.tar.gz"), + when(platform.is.linux_x64, release_file "protolint_%s_Linux_x86_64.tar.gz"), + when(platform.is.win_arm64, release_file "protolint_%s_Windows_arm64.tar.gz"), + when(platform.is.win_x64, release_file "protolint_%s_Windows_x86_64.tar.gz") + ), + }) + .with_receipt() + ctx:link_bin("protolint", platform.is.win and "protolint.exe" or "protolint") + ctx:link_bin("protoc-gen-protolint", platform.is.win and "protoc-gen-protolint.exe" or "protoc-gen-protolint") + end, +} diff --git a/lua/mason-registry/index/psalm/init.lua b/lua/mason-registry/index/psalm/init.lua new file mode 100644 index 00000000..7a994a56 --- /dev/null +++ b/lua/mason-registry/index/psalm/init.lua @@ -0,0 +1,20 @@ +local Pkg = require "mason-core.package" +local composer = require "mason-core.managers.composer" + +return Pkg.new { + name = "psalm", + desc = [[A static analysis tool for finding errors in PHP applications]], + homepage = "https://psalm.dev/", + languages = { Pkg.Lang.PHP }, + categories = { Pkg.Cat.LSP }, + install = composer.packages { + "vimeo/psalm", + bin = { + "psalm", + "psalm-language-server", + "psalm-plugin", + "psalm-refactor", + "psalter", + }, + }, +} diff --git a/lua/mason-registry/index/puppet-editor-services/init.lua b/lua/mason-registry/index/puppet-editor-services/init.lua new file mode 100644 index 00000000..d38c2359 --- /dev/null +++ b/lua/mason-registry/index/puppet-editor-services/init.lua @@ -0,0 +1,26 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "puppet-editor-services", + desc = [[Puppet Language Server for editors]], + homepage = "https://github.com/puppetlabs/puppet-editor-services", + languages = { Pkg.Lang.Puppet }, + categories = { Pkg.Cat.LSP, Pkg.Cat.DAP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + assert(platform.is.unix, "puppet-editor-services only supports UNIX environments.") + github + .unzip_release_file({ + repo = "puppetlabs/puppet-editor-services", + asset_file = function(version) + return ("puppet_editor_services_%s.zip"):format(version) + end, + }) + .with_receipt() + ctx:link_bin("puppet-languageserver", "puppet-languageserver") + ctx:link_bin("puppet-debugserver", "puppet-debugserver") + end, +} diff --git a/lua/mason-registry/index/purescript-language-server/init.lua b/lua/mason-registry/index/purescript-language-server/init.lua new file mode 100644 index 00000000..dd1395ac --- /dev/null +++ b/lua/mason-registry/index/purescript-language-server/init.lua @@ -0,0 +1,16 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "purescript-language-server", + desc = _.dedent [[ + Node-based Language Server Protocol server for PureScript based on the PureScript IDE server (aka psc-ide / purs + ide server). Used as the vscode plugin backend but should be compatible with other Language Server Client + implementations. + ]], + languages = { Pkg.Lang.PureScript }, + categories = { Pkg.Cat.LSP }, + homepage = "https://github.com/nwolverson/purescript-language-server", + install = npm.packages { "purescript-language-server", bin = { "purescript-language-server" } }, +} diff --git a/lua/mason-registry/index/pydocstyle/init.lua b/lua/mason-registry/index/pydocstyle/init.lua new file mode 100644 index 00000000..74d4b3af --- /dev/null +++ b/lua/mason-registry/index/pydocstyle/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "pydocstyle", + desc = "pydocstyle is a static analysis tool for checking compliance with Python docstring conventions", + homepage = "https://www.pydocstyle.org/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "pydocstyle", bin = { "pydocstyle" } }, +} diff --git a/lua/mason-registry/index/pylama/init.lua b/lua/mason-registry/index/pylama/init.lua new file mode 100644 index 00000000..42e0c562 --- /dev/null +++ b/lua/mason-registry/index/pylama/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "pylama", + desc = [[Code audit tool for Python.]], + homepage = "https://klen.github.io/pylama/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "pylama[all]", bin = { "pylama" } }, +} diff --git a/lua/mason-registry/index/pylint/init.lua b/lua/mason-registry/index/pylint/init.lua new file mode 100644 index 00000000..292847c7 --- /dev/null +++ b/lua/mason-registry/index/pylint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "pylint", + desc = [[Pylint is a static code analyser for Python 2 or 3]], + homepage = "https://pypi.org/project/pylint/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "pylint", bin = { "pylint" } }, +} diff --git a/lua/mason-registry/index/pyproject-flake8/init.lua b/lua/mason-registry/index/pyproject-flake8/init.lua new file mode 100644 index 00000000..9657942a --- /dev/null +++ b/lua/mason-registry/index/pyproject-flake8/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "pyproject-flake8", + desc = "A monkey patching wrapper to connect flake8 with pyproject.toml configuration.", + homepage = "https://github.com/csachs/pyproject-flake8", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "pyproject-flake8", bin = { "pflake8" } }, +} diff --git a/lua/mason-registry/index/pyre/init.lua b/lua/mason-registry/index/pyre/init.lua new file mode 100644 index 00000000..878e1abe --- /dev/null +++ b/lua/mason-registry/index/pyre/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "pyre", + desc = [[Pyre is a performant type checker for Python compliant with PEP 484]], + homepage = "https://pypi.org/project/pyre-check/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter, Pkg.Cat.LSP }, + install = pip3.packages { "pyre-check", bin = { "pyre" } }, +} diff --git a/lua/mason-registry/index/pyright/init.lua b/lua/mason-registry/index/pyright/init.lua new file mode 100644 index 00000000..82957fa0 --- /dev/null +++ b/lua/mason-registry/index/pyright/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "pyright", + desc = [[Static type checker for Python]], + homepage = "https://github.com/microsoft/pyright", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "pyright", bin = { "pyright", "pyright-langserver" } }, +} diff --git a/lua/mason-registry/index/python-lsp-server/init.lua b/lua/mason-registry/index/python-lsp-server/init.lua new file mode 100644 index 00000000..8fb212a4 --- /dev/null +++ b/lua/mason-registry/index/python-lsp-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "python-lsp-server", + desc = [[Fork of the python-language-server project, maintained by the Spyder IDE team and the community]], + homepage = "https://github.com/python-lsp/python-lsp-server", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "python-lsp-server[all]", bin = { "pylsp" } }, +} diff --git a/lua/mason-registry/index/quick-lint-js/init.lua b/lua/mason-registry/index/quick-lint-js/init.lua new file mode 100644 index 00000000..40764b37 --- /dev/null +++ b/lua/mason-registry/index/quick-lint-js/init.lua @@ -0,0 +1,53 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "quick-lint-js", + desc = _.dedent [[ + Over 130× faster than ESLint, quick-lint-js gives you instant feedback as you code. Find bugs in your JavaScript + before your finger leaves the keyboard. Lint any JavaScript file with no configuration. + ]], + homepage = "https://quick-lint-js.com/", + languages = { Pkg.Lang.JavaScript }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "quick-lint/quick-lint-js" + local release_file = assert( + coalesce( + when(platform.is.mac_x64, "macos.tar.gz"), + when(platform.is.mac_arm64, "macos-aarch64.tar.gz"), + when(platform.is.linux_x64, "linux.tar.gz"), + when(platform.is.linux_arm64, "linux-aarch64.tar.gz"), + when(platform.is.linux_arm, "linux-armhf.tar.gz"), + when(platform.is.win_x64, "windows.zip"), + when(platform.is.win_arm64, "windows-arm64.zip"), + when(platform.is.win_arm, "windows-arm.zip") + ), + "Current platform is not supported." + ) + + local source = github.tag { repo = repo } + source.with_receipt() + + local url = ("https://c.quick-lint-js.com/releases/%s/manual/%s"):format(source.tag, release_file) + platform.when { + unix = function() + std.download_file(url, "archive.tar.gz") + std.untar("archive.tar.gz", { strip_components = 1 }) + end, + win = function() + std.download_file(url, "archive.zip") + std.unzip("archive.zip", ".") + end, + } + ctx:link_bin("quick-lint-js", path.concat { "bin", platform.is.win and "quick-lint-js.exe" or "quick-lint-js" }) + end, +} diff --git a/lua/mason-registry/index/r-languageserver/init.lua b/lua/mason-registry/index/r-languageserver/init.lua new file mode 100644 index 00000000..acb12ea4 --- /dev/null +++ b/lua/mason-registry/index/r-languageserver/init.lua @@ -0,0 +1,87 @@ +local a = require "mason-core.async" +local async_uv = require "mason-core.async.uv" +local Pkg = require "mason-core.package" +local path = require "mason-core.path" +local github = require "mason-core.managers.github" + +---@param install_dir string +---@param ref string +local function create_install_script(install_dir, ref) + return ([[ +options(langserver_library = %q); +options(langserver_quiet = FALSE); +options(repos = list(CRAN = "http://cran.rstudio.com/")); +rlsLib <- getOption("langserver_library"); +.libPaths(new = rlsLib); + +didInstallRemotes <- FALSE; +tryCatch( + expr = { library("remotes") }, + error = function (e) { + install.packages("remotes", lib = rlsLib); + loadNamespace("remotes", lib.loc = rlsLib); + didInstallRemotes <- TRUE; + } +); + +# We set force = TRUE because this command will error if languageserversetup is already installed (even if it's at a +# different library location). +remotes::install_github("jozefhajnala/languageserversetup", lib = rlsLib, force = TRUE); + +if (didInstallRemotes) { + remove.packages("remotes", lib = rlsLib); +} + +loadNamespace("languageserversetup", lib.loc = rlsLib); +languageserversetup::languageserver_install( + fullReinstall = FALSE, + confirmBeforeInstall = FALSE, + strictLibrary = TRUE, + ref = %q +); +library("languageserver", lib.loc = rlsLib); +]]):format(install_dir, ref) +end + +---@param install_dir string +local function create_server_script(install_dir) + return ([[ +options("langserver_library" = %q); +rlsLib <- getOption("langserver_library"); +.libPaths(new = c(rlsLib, .libPaths())); +loadNamespace("languageserver", lib.loc = rlsLib); +languageserver::run(); + ]]):format(install_dir) +end + +return Pkg.new { + name = "r-languageserver", + desc = [[An implementation of the Language Server Protocol for R]], + homepage = "https://github.com/REditorSupport/languageserver", + languages = { Pkg.Lang.R }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.release_version { repo = "REditorSupport/languageserver" } + source.with_receipt() + ctx.spawn.R { + "--no-save", + on_spawn = a.scope(function(_, stdio) + local stdin = stdio[1] + async_uv.write(stdin, create_install_script(ctx.cwd:get(), source.release)) + async_uv.shutdown(stdin) + async_uv.close(stdin) + end), + } + ctx.fs:write_file("server.R", create_server_script(ctx.package:get_install_path())) + + ctx:link_bin( + "r-languageserver", + ctx:write_shell_exec_wrapper( + "r-languageserver", + ("R --slave -f %q"):format(path.concat { ctx.package:get_install_path(), "server.R" }) + ) + ) + end, +} diff --git a/lua/mason-registry/index/raku-navigator/init.lua b/lua/mason-registry/index/raku-navigator/init.lua new file mode 100644 index 00000000..3c9cb3e1 --- /dev/null +++ b/lua/mason-registry/index/raku-navigator/init.lua @@ -0,0 +1,22 @@ +local Pkg = require "mason-core.package" +local git = require "mason-core.managers.git" +local path = require "mason-core.path" + +return Pkg.new { + name = "raku-navigator", + desc = [[Raku Language Server that includes Raku critic and code navigation]], + homepage = "https://github.com/bscan/RakuNavigator", + languages = { Pkg.Lang.Raku }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + git.clone({ "https://github.com/bscan/RakuNavigator" }).with_receipt() + ctx.spawn.npm { "install" } + ctx.spawn.npm { "run", "compile" } + ctx:link_bin( + "raku-navigator", + ctx:write_node_exec_wrapper("raku-navigator", path.concat { "server", "out", "server.js" }) + ) + end, +} diff --git a/lua/mason-registry/index/reason-language-server/init.lua b/lua/mason-registry/index/reason-language-server/init.lua new file mode 100644 index 00000000..20aab910 --- /dev/null +++ b/lua/mason-registry/index/reason-language-server/init.lua @@ -0,0 +1,38 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "reason-language-server", + desc = [[A language server for reason, in reason]], + homepage = "https://github.com/jaredly/reason-language-server", + languages = { Pkg.Lang.Reason }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local archive_name = coalesce( + when(platform.is.mac, "rls-macos"), + when(platform.is.linux_x64, "rls-linux"), + when(platform.is.win_x64, "rls-windows") + ) + github + .unzip_release_file({ + repo = "jaredly/reason-language-server", + asset_file = ("%s.zip"):format(archive_name), + }) + .with_receipt() + ctx.fs:rename(archive_name, "reason") + ctx:link_bin( + "reason-language-server", + path.concat { + "reason", + platform.is.win and "reason-language-server.exe" or "reason-language-server", + } + ) + end, +} diff --git a/lua/mason-registry/index/remark-cli/init.lua b/lua/mason-registry/index/remark-cli/init.lua new file mode 100644 index 00000000..46be0619 --- /dev/null +++ b/lua/mason-registry/index/remark-cli/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "remark-cli", + desc = [[Command line interface to inspect and change markdown files with remark.]], + homepage = "https://remark.js.org/", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "remark-cli", bin = { "remark" } }, +} diff --git a/lua/mason-registry/index/remark-language-server/init.lua b/lua/mason-registry/index/remark-language-server/init.lua new file mode 100644 index 00000000..e891b370 --- /dev/null +++ b/lua/mason-registry/index/remark-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "remark-language-server", + desc = [[A language server to lint and format markdown files with remark]], + homepage = "https://github.com/remarkjs/remark-language-server", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "remark-language-server", bin = { "remark-language-server" } }, +} diff --git a/lua/mason-registry/index/reorder-python-imports/init.lua b/lua/mason-registry/index/reorder-python-imports/init.lua new file mode 100644 index 00000000..6a267aad --- /dev/null +++ b/lua/mason-registry/index/reorder-python-imports/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "reorder-python-imports", + desc = [[Tool for automatically reordering python imports. Similar to isort but uses static analysis more.]], + homepage = "https://github.com/asottile/reorder_python_imports", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "reorder-python-imports", bin = { "reorder-python-imports" } }, +} diff --git a/lua/mason-registry/index/rescript-lsp/init.lua b/lua/mason-registry/index/rescript-lsp/init.lua new file mode 100644 index 00000000..ec79ab09 --- /dev/null +++ b/lua/mason-registry/index/rescript-lsp/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +return Pkg.new { + name = "rescript-lsp", + desc = [[Language Server for ReScript.]], + homepage = "https://github.com/rescript-lang/rescript-vscode", + languages = { Pkg.Lang.ReScript }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "rescript-lang/rescript-vscode", + asset_file = function(version) + return ("rescript-vscode-%s.vsix"):format(version) + end, + }) + .with_receipt() + + ctx:link_bin( + "rescript-lsp", + ctx:write_node_exec_wrapper( + "rescript-lsp", + path.concat { + "extension", + "server", + "out", + "server.js", + } + ) + ) + end, +} diff --git a/lua/mason-registry/index/revive/init.lua b/lua/mason-registry/index/revive/init.lua new file mode 100644 index 00000000..3f9678d0 --- /dev/null +++ b/lua/mason-registry/index/revive/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "revive", + desc = [[~6x faster, stricter, configurable, extensible, and beautiful drop-in replacement for golint]], + homepage = "https://github.com/mgechev/revive", + categories = { Pkg.Cat.Linter }, + languages = { Pkg.Lang.Go }, + install = go.packages { "github.com/mgechev/revive", bin = { "revive" } }, +} diff --git a/lua/mason-registry/index/rnix-lsp/init.lua b/lua/mason-registry/index/rnix-lsp/init.lua new file mode 100644 index 00000000..75576ed6 --- /dev/null +++ b/lua/mason-registry/index/rnix-lsp/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "rnix-lsp", + desc = [[Language Server for Nix]], + homepage = "https://github.com/nix-community/rnix-lsp", + languages = { Pkg.Lang.Nix }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("rnix-lsp", { + bin = { "rnix-lsp" }, + }), +} diff --git a/lua/mason-registry/index/robotframework-lsp/init.lua b/lua/mason-registry/index/robotframework-lsp/init.lua new file mode 100644 index 00000000..4458e3b3 --- /dev/null +++ b/lua/mason-registry/index/robotframework-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "robotframework-lsp", + desc = [[Language Server Protocol implementation for Robot Framework]], + homepage = "https://github.com/robocorp/robotframework-lsp", + languages = { Pkg.Lang["Robot Framework"] }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "robotframework-lsp", bin = { "robotframework_ls" } }, +} diff --git a/lua/mason-registry/index/rome/init.lua b/lua/mason-registry/index/rome/init.lua new file mode 100644 index 00000000..66faf621 --- /dev/null +++ b/lua/mason-registry/index/rome/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "rome", + desc = [[Rome is a formatter, linter, bundler, and more for JavaScript, TypeScript, JSON, HTML, Markdown, and CSS.]], + homepage = "https://rome.tools", + languages = { Pkg.Lang.TypeScript, Pkg.Lang.JavaScript }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Linter }, + install = npm.packages { "rome", bin = { "rome" } }, +} diff --git a/lua/mason-registry/index/rstcheck/init.lua b/lua/mason-registry/index/rstcheck/init.lua new file mode 100644 index 00000000..0c939b04 --- /dev/null +++ b/lua/mason-registry/index/rstcheck/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "rstcheck", + desc = "Checks syntax of reStructuredText and code blocks nested within it.", + homepage = "https://rstcheck.readthedocs.io/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "rstcheck", bin = { "rstcheck" } }, +} diff --git a/lua/mason-registry/index/rubocop/init.lua b/lua/mason-registry/index/rubocop/init.lua new file mode 100644 index 00000000..8b502756 --- /dev/null +++ b/lua/mason-registry/index/rubocop/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" + +return Pkg.new { + name = "rubocop", + desc = [[The Ruby Linter/Formatter that Serves and Protects]], + homepage = "https://rubocop.org", + languages = { Pkg.Lang.Ruby }, + categories = { Pkg.Cat.Formatter, Pkg.Cat.Linter }, + install = gem.packages { "rubocop", bin = { "rubocop" } }, +} diff --git a/lua/mason-registry/index/ruby-lsp/init.lua b/lua/mason-registry/index/ruby-lsp/init.lua new file mode 100644 index 00000000..d84487b3 --- /dev/null +++ b/lua/mason-registry/index/ruby-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" + +return Pkg.new { + name = "ruby-lsp", + desc = [[This gem is an implementation of the language server protocol specification for Ruby, used to improve editor features.]], + homepage = "https://github.com/Shopify/ruby-lsp", + languages = { Pkg.Lang.Ruby }, + categories = { Pkg.Cat.LSP }, + install = gem.packages { "ruby-lsp", bin = { "ruby-lsp" } }, +} diff --git a/lua/mason-registry/index/ruff-lsp/init.lua b/lua/mason-registry/index/ruff-lsp/init.lua new file mode 100644 index 00000000..dc9d42cd --- /dev/null +++ b/lua/mason-registry/index/ruff-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "ruff-lsp", + desc = [[A Language Server Protocol implementation for Ruff - An extremely fast Python linter, written in Rust.]], + homepage = "https://github.com/charliermarsh/ruff-lsp/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "ruff-lsp", bin = { "ruff-lsp" } }, +} diff --git a/lua/mason-registry/index/ruff/init.lua b/lua/mason-registry/index/ruff/init.lua new file mode 100644 index 00000000..354f013c --- /dev/null +++ b/lua/mason-registry/index/ruff/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "ruff", + desc = [[An extremely fast Python linter, written in Rust.]], + homepage = "https://github.com/charliermarsh/ruff/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "ruff", bin = { "ruff" } }, +} diff --git a/lua/mason-registry/index/rust-analyzer/init.lua b/lua/mason-registry/index/rust-analyzer/init.lua new file mode 100644 index 00000000..27294e29 --- /dev/null +++ b/lua/mason-registry/index/rust-analyzer/init.lua @@ -0,0 +1,53 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "rust-analyzer", + desc = _.dedent [[ + rust-analyzer is an implementation of Language Server Protocol for the Rust programming language. It provides + features like completion and goto definition for many code editors, including VS Code, Emacs and Vim. + ]], + homepage = "https://rust-analyzer.github.io", + languages = { Pkg.Lang.Rust }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local asset_file = coalesce( + when(platform.is.mac_arm64, "rust-analyzer-aarch64-apple-darwin.gz"), + when(platform.is.mac_x64, "rust-analyzer-x86_64-apple-darwin.gz"), + when(platform.is.linux_x64_gnu, "rust-analyzer-x86_64-unknown-linux-gnu.gz"), + when(platform.is.linux_arm64_gnu, "rust-analyzer-aarch64-unknown-linux-gnu.gz"), + when(platform.is.linux_x64_musl, "rust-analyzer-x86_64-unknown-linux-musl.gz"), + when(platform.is.win_arm64, "rust-analyzer-aarch64-pc-windows-msvc.zip"), + when(platform.is.win_x64, "rust-analyzer-x86_64-pc-windows-msvc.zip") + ) + + platform.when { + unix = function() + github + .gunzip_release_file({ + repo = "rust-lang/rust-analyzer", + asset_file = asset_file, + out_file = "rust-analyzer", + }) + .with_receipt() + end, + win = function() + github + .unzip_release_file({ + repo = "rust-lang/rust-analyzer", + asset_file = asset_file, + }) + .with_receipt() + end, + } + std.chmod("+x", { "rust-analyzer" }) + ctx:link_bin("rust-analyzer", platform.is.win and "rust-analyzer.exe" or "rust-analyzer") + end, +} diff --git a/lua/mason-registry/index/rustfmt/init.lua b/lua/mason-registry/index/rustfmt/init.lua new file mode 100644 index 00000000..c53aa98a --- /dev/null +++ b/lua/mason-registry/index/rustfmt/init.lua @@ -0,0 +1,40 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "rustfmt", + desc = [[A tool for formatting Rust code according to style guidelines]], + homepage = "https://github.com/rust-lang/rustfmt", + categories = { Pkg.Cat.Formatter }, + languages = { Pkg.Lang.Rust }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + platform.when { + unix = function() + local source = github.untargz_release_file { + repo = "rust-lang/rustfmt", + asset_file = coalesce( + when(platform.is.mac, _.format "rustfmt_macos-x86_64_%s.tar.gz"), + when(platform.is.linux_x64, _.format "rustfmt_linux-x86_64_%s.tar.gz") + ), + } + source.with_receipt() + ctx:link_bin("rustfmt", path.concat { source.asset_file:gsub("%.tar%.gz$", ""), "rustfmt" }) + end, + win = function() + local source = github.unzip_release_file { + repo = "rust-lang/rustfmt", + asset_file = coalesce(when(platform.is.win_x64, _.format "rustfmt_windows-x86_64-msvc_%s.zip")), + } + source.with_receipt() + ctx:link_bin("rustfmt", path.concat { source.asset_file:gsub("%.zip$", ""), "rustfmt.exe" }) + end, + } + end, +} diff --git a/lua/mason-registry/index/rustywind/init.lua b/lua/mason-registry/index/rustywind/init.lua new file mode 100644 index 00000000..ab81db51 --- /dev/null +++ b/lua/mason-registry/index/rustywind/init.lua @@ -0,0 +1,18 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "rustywind", + desc = [[CLI for organizing Tailwind CSS classes]], + homepage = "https://github.com/avencera/rustywind", + languages = { + Pkg.Lang.JavaScript, + Pkg.Lang.TypeScript, + Pkg.Lang.JSX, + Pkg.Lang.HTML, + Pkg.Lang.Vue, + Pkg.Lang.Angular, + }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "rustywind", bin = { "rustywind" } }, +} diff --git a/lua/mason-registry/index/salt-lsp/init.lua b/lua/mason-registry/index/salt-lsp/init.lua new file mode 100644 index 00000000..91f79be5 --- /dev/null +++ b/lua/mason-registry/index/salt-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "salt-lsp", + desc = [[Salt Language Server Protocol Server]], + languages = { Pkg.Lang.Salt }, + categories = { Pkg.Cat.LSP }, + homepage = "https://github.com/dcermak/salt-lsp", + install = pip3.packages { "salt-lsp", bin = { "salt_lsp_server" } }, +} diff --git a/lua/mason-registry/index/selene/init.lua b/lua/mason-registry/index/selene/init.lua new file mode 100644 index 00000000..d6dfd963 --- /dev/null +++ b/lua/mason-registry/index/selene/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "selene", + desc = [[A blazing-fast modern Lua linter written in Rust]], + homepage = "https://kampfkarren.github.io/selene/", + languages = { Pkg.Lang.Lua, Pkg.Lang.Luau }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "Kampfkarren/selene", + asset_file = function(release) + local target = coalesce( + when(platform.is.mac, "selene-%s-macos.zip"), + when(platform.is.linux_x64, "selene-%s-linux.zip"), + when(platform.is.win_x64, "selene-%s-windows.zip") + ) + return target and target:format(release) + end, + }) + .with_receipt() + std.chmod("+x", { "selene" }) + ctx:link_bin("selene", platform.is.win and "selene.exe" or "selene") + end, +} diff --git a/lua/mason-registry/index/semgrep/init.lua b/lua/mason-registry/index/semgrep/init.lua new file mode 100644 index 00000000..45e766cb --- /dev/null +++ b/lua/mason-registry/index/semgrep/init.lua @@ -0,0 +1,22 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "semgrep", + desc = "Semgrep is a fast, open-source, static analysis engine for finding bugs, detecting vulnerabilities in third-party dependencies, and enforcing code standards.", + homepage = "https://github.com/returntocorp/semgrep", + languages = { + Pkg.Lang["C#"], + Pkg.Lang.Go, + Pkg.Lang.Java, + Pkg.Lang.JavaScript, + Pkg.Lang.JSON, + Pkg.Lang.PHP, + Pkg.Lang.Python, + Pkg.Lang.Ruby, + Pkg.Lang.TypeScript, + Pkg.Lang.Scala, + }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "semgrep", bin = { "semgrep" } }, +} diff --git a/lua/mason-registry/index/serve-d/init.lua b/lua/mason-registry/index/serve-d/init.lua new file mode 100644 index 00000000..77734960 --- /dev/null +++ b/lua/mason-registry/index/serve-d/init.lua @@ -0,0 +1,51 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "serve-d", + desc = [[Microsoft language server protocol implementation for D using workspace-d]], + homepage = "https://github.com/Pure-D/serve-d", + languages = { Pkg.Lang.D }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "Pure-D/serve-d" + platform.when { + unix = function() + github + .untarxz_release_file({ + repo = repo, + asset_file = function(release) + local target = coalesce( + when(platform.is.mac, "serve-d_%s-osx-x86_64.tar.xz"), + when(platform.is.linux_x64, "serve-d_%s-linux-x86_64.tar.xz") + ) + return target and target:format(release:gsub("^v", "")) + end, + }) + .with_receipt() + ctx:link_bin("serve-d", "serve-d") + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = function(release) + local target = coalesce( + when(platform.arch == "x64", "serve-d_%s-windows-x86_64.zip"), + when(platform.arch == "x86", "serve-d_%s-windows-x86.zip") + ) + return target and target:format(release:gsub("^v", "")) + end, + }) + .with_receipt() + ctx:link_bin("serve-d", "serve-d.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/shellcheck/init.lua b/lua/mason-registry/index/shellcheck/init.lua new file mode 100644 index 00000000..4d6ef2bc --- /dev/null +++ b/lua/mason-registry/index/shellcheck/init.lua @@ -0,0 +1,42 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "shellcheck", + desc = [[ShellCheck, a static analysis tool for shell scripts]], + homepage = "https://www.shellcheck.net/", + categories = { Pkg.Cat.Linter }, + languages = { Pkg.Lang.Bash }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + platform.when { + unix = function() + github + .untarxz_release_file({ + strip_components = 1, + repo = "koalaman/shellcheck", + asset_file = _.coalesce( + _.when(platform.is.mac, _.format "shellcheck-%s.darwin.x86_64.tar.xz"), + _.when(platform.is.linux_x64, _.format "shellcheck-%s.linux.x86_64.tar.xz"), + _.when(platform.is.linux_arm64, _.format "shellcheck-%s.linux.aarch64.tar.xz"), + _.when(platform.is.linux_arm, _.format "shellcheck-%s.linux.armv6hf.tar.xz") + ), + }) + .with_receipt() + ctx:link_bin("shellcheck", "shellcheck") + end, + win = function() + github + .unzip_release_file({ + repo = "koalaman/shellcheck", + asset_file = _.coalesce(_.when(platform.is.win_x64, _.format "shellcheck-%s.zip")), + }) + .with_receipt() + ctx:link_bin("shellcheck", "shellcheck.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/shellharden/init.lua b/lua/mason-registry/index/shellharden/init.lua new file mode 100644 index 00000000..847dc766 --- /dev/null +++ b/lua/mason-registry/index/shellharden/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "shellharden", + desc = [[The corrective bash syntax highlighter]], + homepage = "https://github.com/anordal/shellharden", + languages = { Pkg.Lang.Bash }, + categories = { Pkg.Cat.Formatter, Pkg.Cat.Linter }, + install = cargo.crate("shellharden", { bin = { "shellharden" } }), +} diff --git a/lua/mason-registry/index/shfmt/init.lua b/lua/mason-registry/index/shfmt/init.lua new file mode 100644 index 00000000..798a7968 --- /dev/null +++ b/lua/mason-registry/index/shfmt/init.lua @@ -0,0 +1,33 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "shfmt", + desc = [[A shell formatter (sh/bash/mksh)]], + homepage = "https://github.com/mvdan/sh", + languages = { Pkg.Lang.Bash, Pkg.Lang.Mksh, Pkg.Lang.Shell }, + categories = { Pkg.Cat.Formatter }, + install = function(ctx) + github + .download_release_file({ + repo = "mvdan/sh", + out_file = platform.is.win and "shfmt.exe" or "shfmt", + asset_file = coalesce( + when(platform.is.mac_arm64, _.format "shfmt_%s_darwin_arm64"), + when(platform.is.mac_x64, _.format "shfmt_%s_darwin_amd64"), + when(platform.is.linux_arm64, _.format "shfmt_%s_linux_arm64"), + when(platform.is.linux_x64, _.format "shfmt_%s_linux_amd64"), + when(platform.is.win_x86, _.format "shfmt_%s_windows_386.exe"), + when(platform.is.win_x64, _.format "shfmt_%s_windows_amd64.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "shfmt" }) + ctx:link_bin("shfmt", platform.is.win and "shfmt.exe" or "shfmt") + end, +} diff --git a/lua/mason-registry/index/shopify-theme-check/init.lua b/lua/mason-registry/index/shopify-theme-check/init.lua new file mode 100644 index 00000000..bba774f8 --- /dev/null +++ b/lua/mason-registry/index/shopify-theme-check/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" + +return Pkg.new { + name = "shopify-theme-check", + desc = [[The Ultimate Shopify Theme Linter]], + homepage = "https://github.com/Shopify/theme-check", + languages = { Pkg.Lang.Liquid }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Linter }, + install = gem.packages { "theme-check", bin = { "theme-check-language-server" } }, +} diff --git a/lua/mason-registry/index/slint-lsp/init.lua b/lua/mason-registry/index/slint-lsp/init.lua new file mode 100644 index 00000000..50e26725 --- /dev/null +++ b/lua/mason-registry/index/slint-lsp/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +return Pkg.new { + name = "slint-lsp", + desc = [[A LSP Server that adds features like auto-complete and live preview of the .slint files to many editors.]], + homepage = "https://slint-ui.com/", + languages = { Pkg.Lang.Slint }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "slint-ui/slint" + platform.when { + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = "slint-lsp-windows.zip", + }) + .with_receipt() + end, + linux = function() + github + .untargz_release_file({ + repo = repo, + asset_file = "slint-lsp-linux.tar.gz", + }) + .with_receipt() + end, + } + ctx:link_bin("slint-lsp", path.concat { "slint-lsp", platform.is.win and "slint-lsp.exe" or "slint-lsp" }) + end, +} diff --git a/lua/mason-registry/index/smithy-language-server/init.lua b/lua/mason-registry/index/smithy-language-server/init.lua new file mode 100644 index 00000000..cef679c5 --- /dev/null +++ b/lua/mason-registry/index/smithy-language-server/init.lua @@ -0,0 +1,38 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local fs = require "mason-core.fs" +local git = require "mason-core.managers.git" +local path = require "mason-core.path" + +return Pkg.new { + name = "smithy-language-server", + desc = "A Language Server Protocol implementation for the Smithy IDL.", + homepage = "https://github.com/awslabs/smithy-language-server", + languages = { Pkg.Lang.Smithy }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + git.clone({ "https://github.com/awslabs/smithy-language-server" }).with_receipt() + ctx:promote_cwd() + ctx.spawn.gradlew { + "build", + with_paths = { ctx.cwd:get() }, + } + + local version = _.trim(ctx.fs:read_file "VERSION") + + ctx:link_bin( + "smithy-language-server", + ctx:write_shell_exec_wrapper( + "smithy-language-server", + ("java -jar %q"):format(path.concat { + ctx.package:get_install_path(), + "build", + "libs", + ("smithy-language-server-%s.jar"):format(version), + }) + ) + ) + end, +} diff --git a/lua/mason-registry/index/solang/init.lua b/lua/mason-registry/index/solang/init.lua new file mode 100644 index 00000000..b8b16b86 --- /dev/null +++ b/lua/mason-registry/index/solang/init.lua @@ -0,0 +1,63 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local installer = require "mason-core.installer" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +---@async +local function download_solang() + local source = github + .download_release_file({ + repo = "hyperledger-labs/solang", + out_file = platform.is.win and "solang.exe" or "solang", + asset_file = coalesce( + when(platform.is.mac_x64, "solang-mac-intel"), + when(platform.is.mac_arm64, "solang-mac-arm"), + when(platform.is.linux_arm64, "solang-linux-arm64"), + when(platform.is.linux_x64, "solang-linux-x86-64"), + when(platform.is.win_x64, "solang.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "solang" }) + return source +end + +---@async +---Solang needs a build of llvm with some extra patches. +local function download_llvm() + local source = github.release_file { + repo = "hyperledger-labs/solang", + asset_file = coalesce( + when(platform.is.mac_x64, "llvm14.0-mac-intel.tar.xz"), + when(platform.is.mac_arm64, "llvm14.0-mac-arm.tar.xz"), + when(platform.is.linux_x64, "llvm14.0-linux-x86-64.tar.xz"), + when(platform.is.linux_arm64, "llvm14.0-linux-arm64.tar.xz"), + when(platform.is.win_x64, "llvm14.0-win.zip") + ), + } + if platform.is.win then + std.download_file(source.download_url, "llvm.zip") + std.unzip("llvm.zip", ".") + else + std.download_file(source.download_url, "llvm.tar.xz") + std.untar "llvm.tar.xz" + end +end + +return Pkg.new { + name = "solang", + desc = [[Solidity Compiler for Solana, Substrate, and ewasm]], + homepage = "https://solang.readthedocs.io/en/latest/", + languages = { Pkg.Lang.Solidity }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Compiler }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + installer.run_concurrently { download_solang, download_llvm } + ctx:link_bin("solang", platform.is.win and "solang.exe" or "solang") + end, +} diff --git a/lua/mason-registry/index/solargraph/init.lua b/lua/mason-registry/index/solargraph/init.lua new file mode 100644 index 00000000..e69f84cd --- /dev/null +++ b/lua/mason-registry/index/solargraph/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" + +return Pkg.new { + name = "solargraph", + desc = [[Solargraph is a Ruby gem that provides intellisense features through the language server protocol.]], + homepage = "https://solargraph.org", + languages = { Pkg.Lang.Ruby }, + categories = { Pkg.Cat.LSP }, + install = gem.packages { "solargraph", bin = { "solargraph" } }, +} diff --git a/lua/mason-registry/index/solhint/init.lua b/lua/mason-registry/index/solhint/init.lua new file mode 100644 index 00000000..be55e2f5 --- /dev/null +++ b/lua/mason-registry/index/solhint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "solhint", + desc = [[Solhint is a linting utility for Solidity code]], + homepage = "https://protofire.github.io/solhint/", + languages = { Pkg.Lang.Solidity }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "solhint", bin = { "solhint" } }, +} diff --git a/lua/mason-registry/index/solidity-ls/init.lua b/lua/mason-registry/index/solidity-ls/init.lua new file mode 100644 index 00000000..d5a9259e --- /dev/null +++ b/lua/mason-registry/index/solidity-ls/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "solidity-ls", + desc = [[Solidity language server.]], + homepage = "https://github.com/qiuxiang/solidity-ls", + languages = { Pkg.Lang.Solidity }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "solidity-ls", bin = { "solidity-ls" } }, +} diff --git a/lua/mason-registry/index/solidity/init.lua b/lua/mason-registry/index/solidity/init.lua new file mode 100644 index 00000000..d3b0385c --- /dev/null +++ b/lua/mason-registry/index/solidity/init.lua @@ -0,0 +1,32 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "solidity", + desc = [[Solidity, the Smart Contract Programming Language]], + homepage = "https://github.com/ethereum/solidity", + categories = { Pkg.Cat.Compiler, Pkg.Cat.LSP }, + languages = { Pkg.Lang.Solidity }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "ethereum/solidity", + out_file = platform.is.win and "solc.exe" or "solc", + asset_file = coalesce( + when(platform.is.mac, "solc-macos"), + when(platform.is.linux, "solc-static-linux"), + when(platform.is.win, "solc-windows.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "solc" }) + ctx:link_bin("solc", platform.is.win and "solc.exe" or "solc") + end, +} diff --git a/lua/mason-registry/index/sorbet/init.lua b/lua/mason-registry/index/sorbet/init.lua new file mode 100644 index 00000000..4b111542 --- /dev/null +++ b/lua/mason-registry/index/sorbet/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" + +return Pkg.new { + name = "sorbet", + desc = [[Sorbet is a fast, powerful type checker designed for Ruby.]], + homepage = "https://sorbet.org/", + languages = { Pkg.Lang.Ruby }, + categories = { Pkg.Cat.LSP }, + install = gem.packages { "sorbet", bin = { "srb" } }, +} diff --git a/lua/mason-registry/index/sourcery/init.lua b/lua/mason-registry/index/sourcery/init.lua new file mode 100644 index 00000000..0122af55 --- /dev/null +++ b/lua/mason-registry/index/sourcery/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "sourcery", + desc = _.dedent [[ + Sourcery is a tool available in your IDE, GitHub, or as a CLI that suggests refactoring improvements to help + make your code more readable and generally higher quality. + ]], + homepage = "https://docs.sourcery.ai/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.LSP }, + install = pip3.packages { "sourcery-cli", bin = { "sourcery" } }, +} diff --git a/lua/mason-registry/index/spectral-language-server/init.lua b/lua/mason-registry/index/spectral-language-server/init.lua new file mode 100644 index 00000000..57cc7ff4 --- /dev/null +++ b/lua/mason-registry/index/spectral-language-server/init.lua @@ -0,0 +1,35 @@ +local Pkg = require "mason-core.package" +local git = require "mason-core.managers.git" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local Optional = require "mason-core.optional" +local path = require "mason-core.path" + +return Pkg.new { + name = "spectral-language-server", + desc = _.dedent [[ + Awesome Spectral JSON/YAML linter with OpenAPI/AsyncAPI support. Spectral is a flexible object linter with out + of the box support for OpenAPI v2 and v3, JSON Schema, and AsyncAPI. + ]], + homepage = "https://github.com/stoplightio/vscode-spectral", + languages = { Pkg.Lang.JSON, Pkg.Lang.YAML }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.tag { repo = "stoplightio/vscode-spectral" } + source.with_receipt() + ctx.fs:mkdir "build" + ctx:chdir("build", function() + git.clone { "https://github.com/stoplightio/vscode-spectral", version = Optional.of(source.tag) } + ctx.spawn.npm { "install" } + ctx.spawn.node { "make", "package" } + end) + ctx.fs:rename(path.concat { "build", "dist", "server", "index.js" }, "spectral-language-server.js") + ctx.fs:rmrf "build" + ctx:link_bin( + "spectral-language-server", + ctx:write_node_exec_wrapper("spectral-language-server", "spectral-language-server.js") + ) + end, +} diff --git a/lua/mason-registry/index/sql-formatter/init.lua b/lua/mason-registry/index/sql-formatter/init.lua new file mode 100644 index 00000000..c3bcf10f --- /dev/null +++ b/lua/mason-registry/index/sql-formatter/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "sql-formatter", + desc = [[A whitespace formatter for different query languages]], + homepage = "https://sql-formatter-org.github.io/sql-formatter/", + languages = { Pkg.Lang.SQL }, + categories = { Pkg.Cat.Formatter }, + install = npm.packages { "sql-formatter", bin = { "sql-formatter" } }, +} diff --git a/lua/mason-registry/index/sqlfluff/init.lua b/lua/mason-registry/index/sqlfluff/init.lua new file mode 100644 index 00000000..bbd9ed7d --- /dev/null +++ b/lua/mason-registry/index/sqlfluff/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "sqlfluff", + desc = [[SQLFluff is a dialect-flexible and configurable SQL linter]], + homepage = "https://github.com/sqlfluff/sqlfluff", + languages = { Pkg.Lang.SQL }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "sqlfluff", bin = { "sqlfluff" } }, +} diff --git a/lua/mason-registry/index/sqlls/init.lua b/lua/mason-registry/index/sqlls/init.lua new file mode 100644 index 00000000..7d719838 --- /dev/null +++ b/lua/mason-registry/index/sqlls/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "sqlls", + desc = [[SQL Language Server]], + homepage = "https://github.com/joe-re/sql-language-server", + languages = { Pkg.Lang.SQL }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "sql-language-server", bin = { "sql-language-server" } }, +} diff --git a/lua/mason-registry/index/sqls/init.lua b/lua/mason-registry/index/sqls/init.lua new file mode 100644 index 00000000..eb3215ea --- /dev/null +++ b/lua/mason-registry/index/sqls/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "sqls", + desc = [[SQL language server written in Go.]], + homepage = "https://github.com/lighttiger2505/sqls", + languages = { Pkg.Lang.SQL }, + categories = { Pkg.Cat.LSP }, + install = go.packages { "github.com/lighttiger2505/sqls", bin = { "sqls" } }, +} diff --git a/lua/mason-registry/index/standardrb/init.lua b/lua/mason-registry/index/standardrb/init.lua new file mode 100644 index 00000000..eefb361f --- /dev/null +++ b/lua/mason-registry/index/standardrb/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local gem = require "mason-core.managers.gem" + +return Pkg.new { + name = "standardrb", + desc = [[Ruby Style Guide, with linter and automatic code fixer]], + homepage = "https://github.com/testdouble/standard/", + languages = { Pkg.Lang.Ruby }, + categories = { Pkg.Cat.Formatter, Pkg.Cat.Linter }, + install = gem.packages { "standard", bin = { "standardrb" } }, +} diff --git a/lua/mason-registry/index/staticcheck/init.lua b/lua/mason-registry/index/staticcheck/init.lua new file mode 100644 index 00000000..ab3f0fff --- /dev/null +++ b/lua/mason-registry/index/staticcheck/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local go = require "mason-core.managers.go" + +return Pkg.new { + name = "staticcheck", + desc = [[The advanced Go linter]], + homepage = "https://staticcheck.io/", + categories = { Pkg.Cat.Linter }, + languages = { Pkg.Lang.Go }, + install = go.packages { "honnef.co/go/tools/cmd/staticcheck", bin = { "staticcheck" } }, +} diff --git a/lua/mason-registry/index/stylelint-lsp/init.lua b/lua/mason-registry/index/stylelint-lsp/init.lua new file mode 100644 index 00000000..999ab033 --- /dev/null +++ b/lua/mason-registry/index/stylelint-lsp/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "stylelint-lsp", + desc = [[A stylelint Language Server]], + homepage = "https://github.com/bmatcuk/stylelint-lsp", + languages = { Pkg.Lang.Stylelint }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "stylelint-lsp", bin = { "stylelint-lsp" } }, +} diff --git a/lua/mason-registry/index/stylua/init.lua b/lua/mason-registry/index/stylua/init.lua new file mode 100644 index 00000000..59adff44 --- /dev/null +++ b/lua/mason-registry/index/stylua/init.lua @@ -0,0 +1,31 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "stylua", + desc = [[An opinionated Lua code formatter]], + homepage = "https://github.com/JohnnyMorganz/StyLua", + languages = { Pkg.Lang.Lua, Pkg.Lang.Luau }, + categories = { Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "johnnymorganz/stylua", + asset_file = coalesce( + when(platform.is.mac_arm64, "stylua-macos-aarch64.zip"), + when(platform.is.mac_x64, "stylua-macos.zip"), + when(platform.is.linux_x64, "stylua-linux-x86_64.zip"), + when(platform.is.linux_arm64, "stylua-linux-aarch64.zip"), + when(platform.is.win_x64, "stylua-win64.zip") + ), + }) + .with_receipt() + ctx:link_bin("stylua", platform.is.win and "stylua.exe" or "stylua") + end, +} diff --git a/lua/mason-registry/index/svelte-language-server/init.lua b/lua/mason-registry/index/svelte-language-server/init.lua new file mode 100644 index 00000000..ff495bda --- /dev/null +++ b/lua/mason-registry/index/svelte-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "svelte-language-server", + desc = [[A language server (implementing the language server protocol) for Svelte.]], + languages = { Pkg.Lang.Svelte }, + categories = { Pkg.Cat.LSP }, + homepage = "https://github.com/sveltejs/language-tools", + install = npm.packages { "svelte-language-server", bin = { "svelteserver" } }, +} diff --git a/lua/mason-registry/index/svlangserver/init.lua b/lua/mason-registry/index/svlangserver/init.lua new file mode 100644 index 00000000..dceef60d --- /dev/null +++ b/lua/mason-registry/index/svlangserver/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "svlangserver", + desc = _.dedent [[ + A language server for systemverilog that has been tested to work with coc.nvim, VSCode, Sublime Text 4, emacs, + and Neovim. + ]], + homepage = "https://github.com/imc-trading/svlangserver", + languages = { Pkg.Lang.SystemVerilog }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@imc-trading/svlangserver", bin = { "svlangserver" } }, +} diff --git a/lua/mason-registry/index/svls/init.lua b/lua/mason-registry/index/svls/init.lua new file mode 100644 index 00000000..12e6b297 --- /dev/null +++ b/lua/mason-registry/index/svls/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "svls", + desc = [[SystemVerilog language server]], + homepage = "https://github.com/dalance/svls", + languages = { Pkg.Lang.SystemVerilog }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("svls", { + bin = { "svls" }, + }), +} diff --git a/lua/mason-registry/index/tailwindcss-language-server/init.lua b/lua/mason-registry/index/tailwindcss-language-server/init.lua new file mode 100644 index 00000000..9bde697a --- /dev/null +++ b/lua/mason-registry/index/tailwindcss-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "tailwindcss-language-server", + desc = [[Language Server Protocol implementation for Tailwind CSS.]], + homepage = "https://github.com/tailwindlabs/tailwindcss-intellisense", + languages = { Pkg.Lang.CSS }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@tailwindcss/language-server", bin = { "tailwindcss-language-server" } }, +} diff --git a/lua/mason-registry/index/taplo/init.lua b/lua/mason-registry/index/taplo/init.lua new file mode 100644 index 00000000..b84d890f --- /dev/null +++ b/lua/mason-registry/index/taplo/init.lua @@ -0,0 +1,51 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "taplo", + desc = [[A versatile, feature-rich TOML toolkit.]], + homepage = "https://taplo.tamasfe.dev/", + languages = { Pkg.Lang.TOML }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + platform.when { + unix = function() + github + .gunzip_release_file({ + repo = "tamasfe/taplo", + asset_file = coalesce( + when(platform.is.mac_arm64, "taplo-full-darwin-aarch64.gz"), + when(platform.is.mac_x64, "taplo-full-darwin-x86_64.gz"), + when(platform.is.linux_x64, "taplo-full-linux-x86_64.gz"), + when(platform.is.linux_x86, "taplo-full-linux-x86.gz"), + when(platform.is.linux_arm64, "taplo-full-linux-aarch64.gz") + ), + out_file = "taplo", + }) + .with_receipt() + std.chmod("+x", { "taplo" }) + ctx:link_bin("taplo", "taplo") + end, + win = function() + github + .unzip_release_file({ + repo = "tamasfe/taplo", + asset_file = coalesce( + when(platform.is.win_x64, "taplo-full-windows-x86_64.zip"), + when(platform.is.win_x86, "taplo-full-windows-x86.zip") + ), + out_file = "taplo.zip", + }) + .with_receipt() + ctx:link_bin("taplo", "taplo.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/teal-language-server/init.lua b/lua/mason-registry/index/teal-language-server/init.lua new file mode 100644 index 00000000..fcbdf9c4 --- /dev/null +++ b/lua/mason-registry/index/teal-language-server/init.lua @@ -0,0 +1,14 @@ +local Pkg = require "mason-core.package" +local luarocks = require "mason-core.managers.luarocks" + +return Pkg.new { + name = "teal-language-server", + desc = [[A language server for Teal, a typed dialect of Lua]], + homepage = "https://github.com/teal-language/teal-language-server", + languages = { Pkg.Lang.Teal }, + categories = { Pkg.Cat.LSP }, + install = luarocks.package("teal-language-server", { + dev = true, + bin = { "teal-language-server" }, + }), +} diff --git a/lua/mason-registry/index/tectonic/init.lua b/lua/mason-registry/index/tectonic/init.lua new file mode 100644 index 00000000..a35a7fdf --- /dev/null +++ b/lua/mason-registry/index/tectonic/init.lua @@ -0,0 +1,62 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local Optional = require "mason-core.optional" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "tectonic", + desc = [[Tectonic is a modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.]], + homepage = "https://tectonic-typesetting.github.io", + languages = { Pkg.Lang.LaTeX }, + categories = { Pkg.Cat.Compiler }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "tectonic-typesetting/tectonic" + local function format_release_file(file) + return _.compose(_.format(file), _.gsub("^tectonic@", "")) + end + + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + version = Optional.of "tectonic@0.12.0", + asset_file = coalesce( + when(platform.is.mac_x64, format_release_file "tectonic-%s-x86_64-apple-darwin.tar.gz"), + when(platform.is.mac_arm64, format_release_file "tectonic-%s-aarch64-apple-darwin.tar.gz"), + when( + platform.is.linux_x64_gnu, + format_release_file "tectonic-%s-x86_64-unknown-linux-gnu.tar.gz" + ), + when( + platform.is.linux_x64, + format_release_file "tectonic-%s-x86_64-unknown-linux-musl.tar.gz" + ), + when( + platform.is.linux_arm, + format_release_file "tectonic-%s-arm-unknown-linux-musleabihf.tar.gz" + ) + ), + }) + .with_receipt() + std.chmod("+x", { "tectonic" }) + ctx:link_bin("tectonic", "tectonic") + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = format_release_file "tectonic-%s-x86_64-pc-windows-msvc.zip", + }) + .with_receipt() + ctx:link_bin("tectonic", "tectonic.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/terraform-ls/init.lua b/lua/mason-registry/index/terraform-ls/init.lua new file mode 100644 index 00000000..186f7e9e --- /dev/null +++ b/lua/mason-registry/index/terraform-ls/init.lua @@ -0,0 +1,47 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "terraform-ls", + desc = [[Terraform Language Server]], + homepage = "https://github.com/hashicorp/terraform-ls", + languages = { Pkg.Lang.Terraform }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local source = github.release_version { + repo = "hashicorp/terraform-ls", + } + source.with_receipt() + + local version = _.strip_prefix("v", source.release) + + local target = coalesce( + when(platform.is.mac_arm64, "terraform-ls_%s_darwin_arm64.zip"), + when(platform.is.mac_x64, "terraform-ls_%s_darwin_amd64.zip"), + when(platform.is.linux_arm64, "terraform-ls_%s_linux_arm64.zip"), + when(platform.is.linux_arm, "terraform-ls_%s_linux_arm.zip"), + when(platform.is.linux_x64, "terraform-ls_%s_linux_amd64.zip"), + when(platform.is.linux_x86, "terraform-ls_%s_linux_386.zip"), + when(platform.is.win_arm64, "terraform-ls_%s_windows_arm64.zip"), + when(platform.is.win_x64, "terraform-ls_%s_windows_amd64.zip"), + when(platform.is.win_x86, "terraform-ls_%s_windows_386.zip") + ) + + assert(target, "Current platform is not supported.") + + std.download_file( + ("https://releases.hashicorp.com/terraform-ls/%s/%s"):format(version, target:format(version)), + "terraform-ls.zip" + ) + std.unzip("terraform-ls.zip", ".") + + ctx:link_bin("terraform-ls", platform.is.win and "terraform-ls.exe" or "terraform-ls") + end, +} diff --git a/lua/mason-registry/index/texlab/init.lua b/lua/mason-registry/index/texlab/init.lua new file mode 100644 index 00000000..9a31abbb --- /dev/null +++ b/lua/mason-registry/index/texlab/init.lua @@ -0,0 +1,43 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "texlab", + desc = [[An implementation of the Language Server Protocol for LaTeX]], + homepage = "https://github.com/latex-lsp/texlab", + categories = { Pkg.Cat.LSP }, + languages = { Pkg.Lang.LaTeX }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "latex-lsp/texlab" + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + asset_file = coalesce( + when(platform.is.mac_arm64, "texlab-aarch64-macos.tar.gz"), + when(platform.is.mac_x64, "texlab-x86_64-macos.tar.gz"), + when(platform.is.linux_x64, "texlab-x86_64-linux.tar.gz") + ), + }) + .with_receipt() + ctx:link_bin("texlab", "texlab") + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = coalesce(when(platform.arch == "x64", "texlab-x86_64-windows.zip")), + }) + .with_receipt() + ctx:link_bin("texlab", "texlab.exe") + end, + } + end, +} diff --git a/lua/mason-registry/index/textlint/init.lua b/lua/mason-registry/index/textlint/init.lua new file mode 100644 index 00000000..c5126793 --- /dev/null +++ b/lua/mason-registry/index/textlint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "textlint", + desc = [[The pluggable natural language linter for text and markdown.]], + homepage = "https://textlint.github.io", + languages = { Pkg.Lang.Text, Pkg.Lang.Markdown }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "textlint", bin = { "textlint" } }, +} diff --git a/lua/mason-registry/index/tflint/init.lua b/lua/mason-registry/index/tflint/init.lua new file mode 100644 index 00000000..a886edc4 --- /dev/null +++ b/lua/mason-registry/index/tflint/init.lua @@ -0,0 +1,32 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "tflint", + desc = [[A Pluggable Terraform Linter]], + homepage = "https://github.com/terraform-linters/tflint", + languages = { Pkg.Lang.Terraform }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + repo = "terraform-linters/tflint", + asset_file = coalesce( + when(platform.is.mac_x64, "tflint_darwin_amd64.zip"), + when(platform.is.mac_arm64, "tflint_darwin_arm64.zip"), + when(platform.is.linux_x64, "tflint_linux_amd64.zip"), + when(platform.is.linux_arm64, "tflint_linux_arm64.zip"), + when(platform.is.linux_x86, "tflint_linux_386.zip"), + when(platform.is.win_x64, "tflint_windows_amd64.zip") + ), + }) + .with_receipt() + ctx:link_bin("tflint", platform.is.win and "tflint.exe" or "tflint") + end, +} diff --git a/lua/mason-registry/index/twigcs/init.lua b/lua/mason-registry/index/twigcs/init.lua new file mode 100644 index 00000000..4a0a638a --- /dev/null +++ b/lua/mason-registry/index/twigcs/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" +local platform = require "mason-core.platform" + +return Pkg.new { + name = "twigcs", + desc = _.dedent [[ + The missing checkstyle for twig! Twigcs aims to be what phpcs is to php. It checks your codebase for violations + on coding standards. + ]], + homepage = "https://github.com/friendsoftwig/twigcs", + languages = { Pkg.Lang.Twig }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .download_release_file({ + repo = "friendsoftwig/twigcs", + asset_file = "twigcs.phar", + out_file = platform.is.win and "twigcs.phar" or "twigcs", + }) + .with_receipt() + platform.when { + unix = function() + std.chmod("+x", { "twigcs" }) + ctx:link_bin("twigcs", "twigcs") + end, + win = function() + ctx:link_bin("twigcs", ctx:write_php_exec_wrapper("twigcs", "twigcs.phar")) + end, + } + end, +} diff --git a/lua/mason-registry/index/typescript-language-server/init.lua b/lua/mason-registry/index/typescript-language-server/init.lua new file mode 100644 index 00000000..d978c4e1 --- /dev/null +++ b/lua/mason-registry/index/typescript-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "typescript-language-server", + desc = [[TypeScript & JavaScript Language Server]], + homepage = "https://github.com/typescript-language-server/typescript-language-server", + categories = { Pkg.Cat.LSP }, + languages = { Pkg.Lang.TypeScript, Pkg.Lang.JavaScript }, + install = npm.packages { "typescript-language-server", "typescript", bin = { "typescript-language-server" } }, +} diff --git a/lua/mason-registry/index/unocss-language-server/init.lua b/lua/mason-registry/index/unocss-language-server/init.lua new file mode 100644 index 00000000..5d00c873 --- /dev/null +++ b/lua/mason-registry/index/unocss-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "unocss-language-server", + desc = [[Language Server Protocol implementation for UnoCSS.]], + homepage = "https://github.com/xna00/unocss-language-server", + languages = { Pkg.Lang.CSS }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "unocss-language-server", bin = { "unocss-language-server" } }, +} diff --git a/lua/mason-registry/index/usort/init.lua b/lua/mason-registry/index/usort/init.lua new file mode 100644 index 00000000..03c4d3a8 --- /dev/null +++ b/lua/mason-registry/index/usort/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "usort", + desc = [[Safe, minimal import sorting for Python projects.]], + homepage = "https://usort.readthedocs.io/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "usort", bin = { "usort" } }, +} diff --git a/lua/mason-registry/index/vacuum/init.lua b/lua/mason-registry/index/vacuum/init.lua new file mode 100644 index 00000000..cd4b6410 --- /dev/null +++ b/lua/mason-registry/index/vacuum/init.lua @@ -0,0 +1,43 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "vacuum", + desc = _.dedent [[ + vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool. + Built in go, it tears through API specs faster than you can think. + vacuum is compatible with Spectral rulesets and generates compatible reports. + ]], + homepage = "https://github.com/daveshanley/vacuum", + languages = { Pkg.Lang.OpenAPI }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + ---@param template string + local function release_file(template) + return _.compose(_.format(template), _.strip_prefix "v") + end + + github + .untargz_release_file({ + repo = "daveshanley/vacuum", + asset_file = coalesce( + when(platform.is.darwin_arm64, release_file "vacuum_%s_darwin_arm64.tar.gz"), + when(platform.is.darwin_x64, release_file "vacuum_%s_darwin_x86_64.tar.gz"), + when(platform.is.linux_arm64, release_file "vacuum_%s_linux_arm64.tar.gz"), + when(platform.is.linux_x64, release_file "vacuum_%s_linux_x86_64.tar.gz"), + when(platform.is.linux_x86, release_file "vacuum_%s_linux_i386.tar.gz"), + when(platform.is.win_arm64, release_file "vacuum_%s_windows_arm64.tar.gz"), + when(platform.is.win_x64, release_file "vacuum_%s_windows_x86_64.tar.gz"), + when(platform.is.win_x86, release_file "vacuum_%s_windows_i386.tar.gz") + ), + }) + .with_receipt() + ctx:link_bin("vacuum", platform.is.win and "vacuum.exe" or "vacuum") + end, +} diff --git a/lua/mason-registry/index/vala-language-server/init.lua b/lua/mason-registry/index/vala-language-server/init.lua new file mode 100644 index 00000000..5708205c --- /dev/null +++ b/lua/mason-registry/index/vala-language-server/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local std = require "mason-core.managers.std" +local github = require "mason-core.managers.github" +local git = require "mason-core.managers.git" +local platform = require "mason-core.platform" +local path = require "mason-core.path" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "vala-language-server", + desc = [[Code Intelligence for Vala & Genie]], + homepage = "https://github.com/vala-lang/vala-language-server", + languages = { Pkg.Lang.Vala }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + std.ensure_executable("meson", { help_url = "https://mesonbuild.com/Getting-meson.html" }) + std.ensure_executable("ninja", { help_url = "https://ninja-build.org/" }) + std.ensure_executable("valac", { help_url = "https://wiki.gnome.org/Projects/Vala" }) + + local repo = "vala-lang/vala-language-server" + local source = github.tag { repo = repo } + source.with_receipt() + git.clone { ("https://github.com/%s.git"):format(repo), version = Optional.of(source.tag) } + + local install_dir = ctx.cwd:get() + ctx.spawn.meson { "setup", ("-Dprefix=%s"):format(install_dir), "build" } + ctx.spawn.meson { "compile", "-C", "build" } + ctx.spawn.meson { "install", "-C", "build" } + ctx:link_bin( + "vala-language-server", + path.concat { "bin", platform.is.win and "vala-language-server.exe" or "vala-language-server" } + ) + end, +} diff --git a/lua/mason-registry/index/vale/init.lua b/lua/mason-registry/index/vale/init.lua new file mode 100644 index 00000000..2d65a929 --- /dev/null +++ b/lua/mason-registry/index/vale/init.lua @@ -0,0 +1,49 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "vale", + desc = [[📝 A syntax-aware linter for prose built with speed and extensibility in mind.]], + homepage = "https://vale.sh/", + languages = { Pkg.Lang.Text, Pkg.Lang.Markdown, Pkg.Lang.LaTeX }, + categories = { Pkg.Cat.Linter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "errata-ai/vale" + local release_file = assert( + coalesce( + when(platform.is.mac_x64, "vale_%s_macOS_64-bit.tar.gz"), + when(platform.is.mac_arm64, "vale_%s_macOS_arm64.tar.gz"), + when(platform.is.linux_x64, "vale_%s_Linux_64-bit.tar.gz"), + when(platform.is.linux_arm64, "vale_%s_Linux_arm64.tar.gz"), + when(platform.is.win_x64, "vale_%s_Windows_64-bit.zip") + ), + "Current platform is not supported." + ) + + platform.when { + unix = function() + github + .untargz_release_file({ + repo = repo, + asset_file = _.compose(_.format(release_file), _.gsub("^v", "")), + }) + .with_receipt() + end, + win = function() + github + .unzip_release_file({ + repo = repo, + asset_file = _.compose(_.format(release_file), _.gsub("^v", "")), + }) + .with_receipt() + end, + } + ctx:link_bin("vale", platform.is.win and "vale.exe" or "vale") + end, +} diff --git a/lua/mason-registry/index/verible/init.lua b/lua/mason-registry/index/verible/init.lua new file mode 100644 index 00000000..b0b2fa9c --- /dev/null +++ b/lua/mason-registry/index/verible/init.lua @@ -0,0 +1,101 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local path = require "mason-core.path" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "verible", + desc = [[Verible is a suite of SystemVerilog developer tools, including a parser, style-linter, and formatter.]], + homepage = "https://chipsalliance.github.io/verible/", + languages = { Pkg.Lang.SystemVerilog }, + categories = { Pkg.Cat.LSP, Pkg.Cat.Linter, Pkg.Cat.Formatter }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "chipsalliance/verible" + platform.when { + linux = function() + local os_dist = platform.os_distribution() + local source = github.untarxz_release_file { + repo = repo, + asset_file = coalesce( + when( + os_dist.id == "ubuntu" and platform.arch == "x64", + coalesce( + when( + os_dist.version.major == 16, + _.format "verible-%s-Ubuntu-16.04-xenial-x86_64.tar.gz" + ), + when( + os_dist.version.major == 18, + _.format "verible-%s-Ubuntu-18.04-bionic-x86_64.tar.gz" + ), + when( + os_dist.version.major == 20, + _.format "verible-%s-Ubuntu-20.04-focal-x86_64.tar.gz" + ), + when( + os_dist.version.major == 22, + _.format "verible-%s-Ubuntu-22.04-jammy-x86_64.tar.gz" + ) + ) + ), + when( + os_dist.id == "centos" and platform.arch == "x64", + coalesce( + when( + os_dist.version.major == 7, + _.format "verible-%s-CentOS-7.9.2009-Core-x86_64.tar.gz" + ) + ) + ), + when(platform.is.linux_x64_gnu, _.format "verible-%s-Ubuntu-20.04-focal-x86_64.tar.gz") + ), + } + source.with_receipt() + ctx.fs:rename(("verible-%s"):format(source.release), "verible") + for executable, rel_path in pairs { + ["git-verible-verilog-format.sh"] = { "verible", "bin", "git-verible-verilog-format.sh" }, + ["verible-patch-tool"] = { "verible", "bin", "verible-patch-tool" }, + ["verible-transform-interactive.sh"] = { "verible", "bin", "verible-transform-interactive.sh" }, + ["verible-verilog-diff"] = { "verible", "bin", "verible-verilog-ls" }, + ["verible-verilog-format"] = { "verible", "bin", "verible-verilog-format" }, + ["verible-verilog-kythe-extractor"] = { "verible", "bin", "verible-verilog-kythe-extractor" }, + ["verible-verilog-lint"] = { "verible", "bin", "verible-verilog-lint" }, + ["verible-verilog-ls"] = { "verible", "bin", "verible-verilog-ls" }, + ["verible-verilog-obfuscate"] = { "verible", "bin", "verible-verilog-obfuscate" }, + ["verible-verilog-preprocessor"] = { "verible", "bin", "verible-verilog-preprocessor" }, + ["verible-verilog-project"] = { "verible", "bin", "verible-verilog-project" }, + ["verible-verilog-syntax"] = { "verible", "bin", "verible-verilog-syntax" }, + } do + ctx:link_bin(executable, path.concat(rel_path)) + end + end, + win = function() + local source = github.unzip_release_file { + repo = repo, + asset_file = coalesce(when(platform.is.win_x64, _.format "verible-%s-win64.zip")), + } + source.with_receipt() + ctx.fs:rename(("verible-%s-win64"):format(source.release), "verible") + for executable, rel_path in pairs { + ["verible-patch-tool"] = { "verible", "verible-patch-tool.exe" }, + ["verible-verilog-diff"] = { "verible", "verible-verilog-ls.exe" }, + ["verible-verilog-format"] = { "verible", "verible-verilog-format.exe" }, + ["verible-verilog-kythe-extractor"] = { "verible", "verible-verilog-kythe-extractor.exe" }, + ["verible-verilog-lint"] = { "verible", "verible-verilog-lint.exe" }, + ["verible-verilog-ls"] = { "verible", "verible-verilog-ls.exe" }, + ["verible-verilog-obfuscate"] = { "verible", "verible-verilog-obfuscate.exe" }, + ["verible-verilog-preprocessor"] = { "verible", "verible-verilog-preprocessor.exe" }, + ["verible-verilog-project"] = { "verible", "verible-verilog-project.exe" }, + ["verible-verilog-syntax"] = { "verible", "verible-verilog-syntax.exe" }, + } do + ctx:link_bin(executable, path.concat(rel_path)) + end + end, + } + end, +} diff --git a/lua/mason-registry/index/veryl-ls/init.lua b/lua/mason-registry/index/veryl-ls/init.lua new file mode 100644 index 00000000..6b45e20f --- /dev/null +++ b/lua/mason-registry/index/veryl-ls/init.lua @@ -0,0 +1,13 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "veryl-ls", + desc = [[Veryl language server]], + homepage = "https://github.com/dalance/veryl", + languages = { Pkg.Lang.Veryl }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("veryl-ls", { + bin = { "veryl-ls" }, + }), +} diff --git a/lua/mason-registry/index/vetur-vls/init.lua b/lua/mason-registry/index/vetur-vls/init.lua new file mode 100644 index 00000000..5bb0deff --- /dev/null +++ b/lua/mason-registry/index/vetur-vls/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "vetur-vls", + desc = [[VLS (Vue Language Server) is a language server implementation compatible with Language Server Protocol.]], + homepage = "https://github.com/vuejs/vetur", + languages = { Pkg.Lang.Vue }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "vls", bin = { "vls" } }, +} diff --git a/lua/mason-registry/index/vim-language-server/init.lua b/lua/mason-registry/index/vim-language-server/init.lua new file mode 100644 index 00000000..e24e2f3b --- /dev/null +++ b/lua/mason-registry/index/vim-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "vim-language-server", + desc = [[VimScript language server.]], + homepage = "https://github.com/iamcco/vim-language-server", + languages = { Pkg.Lang.VimScript }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "vim-language-server", bin = { "vim-language-server" } }, +} diff --git a/lua/mason-registry/index/vint/init.lua b/lua/mason-registry/index/vint/init.lua new file mode 100644 index 00000000..694a81aa --- /dev/null +++ b/lua/mason-registry/index/vint/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "vint", + desc = [[Fast and Highly Extensible Vim script Language Lint implemented in Python.]], + homepage = "https://github.com/Vimjas/vint", + languages = { Pkg.Lang.VimScript }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "vim-vint", bin = { "vint" } }, +} diff --git a/lua/mason-registry/index/visualforce-language-server/init.lua b/lua/mason-registry/index/visualforce-language-server/init.lua new file mode 100644 index 00000000..f971ee7f --- /dev/null +++ b/lua/mason-registry/index/visualforce-language-server/init.lua @@ -0,0 +1,34 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local _ = require "mason-core.functional" +local path = require "mason-core.path" + +return Pkg.new { + name = "visualforce-language-server", + desc = [[Visualforce language server]], + homepage = "https://github.com/forcedotcom/salesforcedx-vscode", + languages = { Pkg.Lang.Visualforce }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + github + .unzip_release_file({ + asset_file = _.compose(_.format "salesforcedx-vscode-visualforce-%s.vsix", _.gsub("^v", "")), + repo = "forcedotcom/salesforcedx-vscode", + }) + .with_receipt() + + ctx:link_bin( + "visualforce-language-server", + ctx:write_node_exec_wrapper( + "visualforce-language-server", + path.concat { + "extension", + "dist", + "visualforceServer.js", + } + ) + ) + end, +} diff --git a/lua/mason-registry/index/vls/init.lua b/lua/mason-registry/index/vls/init.lua new file mode 100644 index 00000000..92ac761b --- /dev/null +++ b/lua/mason-registry/index/vls/init.lua @@ -0,0 +1,35 @@ +local Pkg = require "mason-core.package" +local github = require "mason-core.managers.github" +local github_client = require "mason-core.managers.github.client" +local std = require "mason-core.managers.std" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local Optional = require "mason-core.optional" + +return Pkg.new { + name = "vls", + desc = [[V language server]], + homepage = "https://github.com/vlang/vls", + languages = { Pkg.Lang.V }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "vlang/vls" + + github + .download_release_file({ + version = Optional.of "latest", + repo = repo, + out_file = platform.is.win and "vls.exe" or "vls", + asset_file = _.coalesce( + _.when(platform.is.linux_x64, "vls_linux_x64"), + _.when(platform.is.mac, "vls_macos_x64"), + _.when(platform.is.win_x64, "vls_windows_x64.exe") + ), + }) + .with_receipt() + std.chmod("+x", { "vls" }) + ctx:link_bin("vls", platform.is.win and "vls.exe" or "vls") + end, +} diff --git a/lua/mason-registry/index/vtsls/init.lua b/lua/mason-registry/index/vtsls/init.lua new file mode 100644 index 00000000..89254fc7 --- /dev/null +++ b/lua/mason-registry/index/vtsls/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "vtsls", + desc = [[LSP wrapper around the TypeScript extension bundled with VSCode.]], + homepage = "https://github.com/yioneko/vtsls", + categories = { Pkg.Cat.LSP }, + languages = { Pkg.Lang.TypeScript, Pkg.Lang.JavaScript }, + install = npm.packages { "@vtsls/language-server", bin = { "vtsls" } }, +} diff --git a/lua/mason-registry/index/vue-language-server/init.lua b/lua/mason-registry/index/vue-language-server/init.lua new file mode 100644 index 00000000..a9405a41 --- /dev/null +++ b/lua/mason-registry/index/vue-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "vue-language-server", + desc = [[⚡ Explore high-performance tooling for Vue]], + homepage = "https://github.com/johnsoncodehk/volar", + languages = { Pkg.Lang.Vue }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "@volar/vue-language-server", "typescript", bin = { "vue-language-server" } }, +} diff --git a/lua/mason-registry/index/vulture/init.lua b/lua/mason-registry/index/vulture/init.lua new file mode 100644 index 00000000..d6098f5c --- /dev/null +++ b/lua/mason-registry/index/vulture/init.lua @@ -0,0 +1,19 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "vulture", + desc = _.dedent [[ + Vulture finds unused code in Python programs. This is useful for cleaning up and finding errors in large code + bases. If you run Vulture on both your library and test suite you can find untested code. + + Due to Python's dynamic nature, static code analyzers like Vulture are likely to miss some dead code. Also, code + that is only called implicitly may be reported as unused. Nonetheless, Vulture can be a very helpful tool for + higher code quality. + ]], + homepage = "https://github.com/jendrikseipp/vulture", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "vulture", bin = { "vulture" } }, +} diff --git a/lua/mason-registry/index/wgsl-analyzer/init.lua b/lua/mason-registry/index/wgsl-analyzer/init.lua new file mode 100644 index 00000000..c5ff2bb8 --- /dev/null +++ b/lua/mason-registry/index/wgsl-analyzer/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local cargo = require "mason-core.managers.cargo" + +return Pkg.new { + name = "wgsl-analyzer", + desc = [[A language server implementation for the WGSL shading language]], + homepage = "https://github.com/wgsl-analyzer/wgsl-analyzer", + languages = { Pkg.Lang.WGSL }, + categories = { Pkg.Cat.LSP }, + install = cargo.crate("wgsl_analyzer", { + git = { + url = "https://github.com/wgsl-analyzer/wgsl-analyzer", + tag = true, + }, + bin = { "wgsl_analyzer" }, + }), +} diff --git a/lua/mason-registry/index/write-good/init.lua b/lua/mason-registry/index/write-good/init.lua new file mode 100644 index 00000000..6ca66d46 --- /dev/null +++ b/lua/mason-registry/index/write-good/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "write-good", + desc = [[Naive linter for English prose for developers who can't write good and wanna learn to do other stuff good too.]], + homepage = "https://github.com/btford/write-good", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "write-good", bin = { "write-good" } }, +} diff --git a/lua/mason-registry/index/xmlformatter/init.lua b/lua/mason-registry/index/xmlformatter/init.lua new file mode 100644 index 00000000..9a8e0285 --- /dev/null +++ b/lua/mason-registry/index/xmlformatter/init.lua @@ -0,0 +1,17 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "xmlformatter", + desc = _.dedent [[ + xmlformatter is an Open Source Python package that provides formatting of XML documents. xmlformatter differs + from others formatters by handling whitespaces by a distinct set of formatting rules - formatting element + content by an object style and mixed content by a text style. You may find xmlformatter useful for corrections + and presentations. + ]], + homepage = "https://github.com/pamoller/xmlformatter", + languages = { Pkg.Lang.XML }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "xmlformatter", bin = { "xmlformat" } }, +} diff --git a/lua/mason-registry/index/xo/init.lua b/lua/mason-registry/index/xo/init.lua new file mode 100644 index 00000000..17769ae7 --- /dev/null +++ b/lua/mason-registry/index/xo/init.lua @@ -0,0 +1,14 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "xo", + desc = [[JavaScript/TypeScript linter (ESLint wrapper) with great defaults]], + homepage = "https://github.com/xojs/xo", + languages = { + Pkg.Lang.JavaScript, + Pkg.Lang.TypeScript, + }, + categories = { Pkg.Cat.Linter }, + install = npm.packages { "xo", bin = { "xo" } }, +} diff --git a/lua/mason-registry/index/yaml-language-server/init.lua b/lua/mason-registry/index/yaml-language-server/init.lua new file mode 100644 index 00000000..67010889 --- /dev/null +++ b/lua/mason-registry/index/yaml-language-server/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local npm = require "mason-core.managers.npm" + +return Pkg.new { + name = "yaml-language-server", + desc = [[Language Server for YAML Files]], + homepage = "https://github.com/redhat-developer/yaml-language-server", + languages = { Pkg.Lang.YAML }, + categories = { Pkg.Cat.LSP }, + install = npm.packages { "yaml-language-server", bin = { "yaml-language-server" } }, +} diff --git a/lua/mason-registry/index/yamlfmt/init.lua b/lua/mason-registry/index/yamlfmt/init.lua new file mode 100644 index 00000000..9f770f58 --- /dev/null +++ b/lua/mason-registry/index/yamlfmt/init.lua @@ -0,0 +1,35 @@ +local Pkg = require "mason-core.package" +local _ = require "mason-core.functional" +local platform = require "mason-core.platform" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "yamlfmt", + desc = [[yamlfmt is an extensible command line tool or library to format yaml files.]], + homepage = "https://github.com/google/yamlfmt", + categories = { Pkg.Cat.Formatter }, + languages = { Pkg.Lang.YAML }, + install = function(ctx) + ---@param template_string string + local function release_file(template_string) + return _.compose(_.format(template_string), _.gsub("^v", "")) + end + + github + .untargz_release_file({ + repo = "google/yamlfmt", + asset_file = coalesce( + when(platform.is.mac_arm64, release_file "yamlfmt_%s_Darwin_arm64.tar.gz"), + when(platform.is.mac_x64, release_file "yamlfmt_%s_Darwin_x86_64.tar.gz"), + when(platform.is.linux_arm64, release_file "yamlfmt_%s_Linux_arm64.tar.gz"), + when(platform.is.linux_x64, release_file "yamlfmt_%s_Linux_x86_64.tar.gz"), + when(platform.is.win_x86, release_file "yamlfmt_%s_Windows_i386.tar.gz"), + when(platform.is.win_x64, release_file "yamlfmt_%s_Windows_x86_64.tar.gz") + ), + }) + .with_receipt() + ctx:link_bin("yamlfmt", platform.is.win and "yamlfmt.exe" or "yamlfmt") + end, +} diff --git a/lua/mason-registry/index/yamllint/init.lua b/lua/mason-registry/index/yamllint/init.lua new file mode 100644 index 00000000..334ac86e --- /dev/null +++ b/lua/mason-registry/index/yamllint/init.lua @@ -0,0 +1,15 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" +local _ = require "mason-core.functional" + +return Pkg.new { + name = "yamllint", + desc = _.dedent [[ + Linter for YAML files. yamllint does not only check for syntax validity, but for weirdnesses like key repetition + and cosmetic problems such as lines length, trailing spaces, indentation, etc. + ]], + homepage = "https://github.com/adrienverge/yamllint", + languages = { Pkg.Lang.YAML }, + categories = { Pkg.Cat.Linter }, + install = pip3.packages { "yamllint", bin = { "yamllint" } }, +} diff --git a/lua/mason-registry/index/yapf/init.lua b/lua/mason-registry/index/yapf/init.lua new file mode 100644 index 00000000..15041f2f --- /dev/null +++ b/lua/mason-registry/index/yapf/init.lua @@ -0,0 +1,11 @@ +local Pkg = require "mason-core.package" +local pip3 = require "mason-core.managers.pip3" + +return Pkg.new { + name = "yapf", + desc = [[YAPF, Yet Another Python Formatter]], + homepage = "https://pypi.org/project/yapf/", + languages = { Pkg.Lang.Python }, + categories = { Pkg.Cat.Formatter }, + install = pip3.packages { "yapf", "toml", bin = { "yapf" } }, +} diff --git a/lua/mason-registry/index/zk/init.lua b/lua/mason-registry/index/zk/init.lua new file mode 100644 index 00000000..8934c597 --- /dev/null +++ b/lua/mason-registry/index/zk/init.lua @@ -0,0 +1,55 @@ +local Pkg = require "mason-core.package" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "zk", + desc = [[A plain text note-taking assistant]], + homepage = "https://github.com/mickael-menu/zk", + languages = { Pkg.Lang.Markdown }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local repo = "mickael-menu/zk" + platform.when { + mac = function() + github + .unzip_release_file({ + repo = repo, + asset_file = coalesce( + when(platform.arch == "arm64", function(version) + return ("zk-%s-macos-arm64.zip"):format(version) + end), + when(platform.arch == "x64", function(version) + return ("zk-%s-macos-x86_64.zip"):format(version) + end) + ), + }) + :with_receipt() + end, + linux = function() + github + .untargz_release_file({ + repo = repo, + asset_file = coalesce( + when(platform.arch == "arm64", function(version) + return ("zk-%s-linux-arm64.tar.gz"):format(version) + end), + when(platform.arch == "x64", function(version) + return ("zk-%s-linux-amd64.tar.gz"):format(version) + end), + when(platform.arch == "x86", function(version) + return ("zk-%s-linux-i386.tar.gz"):format(version) + end) + ), + }) + .with_receipt() + end, + } + ctx:link_bin("zk", "zk") + end, +} diff --git a/lua/mason-registry/index/zls/init.lua b/lua/mason-registry/index/zls/init.lua new file mode 100644 index 00000000..0ab94850 --- /dev/null +++ b/lua/mason-registry/index/zls/init.lua @@ -0,0 +1,36 @@ +local Pkg = require "mason-core.package" +local path = require "mason-core.path" +local platform = require "mason-core.platform" +local _ = require "mason-core.functional" +local github = require "mason-core.managers.github" +local std = require "mason-core.managers.std" + +local coalesce, when = _.coalesce, _.when + +return Pkg.new { + name = "zls", + desc = [[Zig LSP implementation + Zig Language Server]], + homepage = "https://github.com/zigtools/zls", + languages = { Pkg.Lang.Zig }, + categories = { Pkg.Cat.LSP }, + ---@async + ---@param ctx InstallContext + install = function(ctx) + local asset_file = coalesce( + when(platform.is.mac_arm64, "aarch64-macos.tar.zst"), + when(platform.is.mac_x64, "x86_64-macos.tar.zst"), + when(platform.is.linux_x64, "x86_64-linux.tar.zst"), + when(platform.is.linux_x86, "i386-linux.tar.zst"), + when(platform.is.win_x64, "x86_64-windows.tar.zst"), + when(platform.is.win_x86, "i386-windows.tar.zst") + ) + github + .untarzst_release_file({ + repo = "zigtools/zls", + asset_file = asset_file, + }) + .with_receipt() + std.chmod("+x", { path.concat { "bin", "zls" } }) + ctx:link_bin("zls", path.concat { "bin", platform.is.win and "zls.exe" or "zls" }) + end, +} |
