aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-registry/index
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-02-20 22:19:39 +0100
committerGitHub <noreply@github.com>2023-02-20 22:19:39 +0100
commitb8a6632a0f2d263199d5d480ca85477fe0f414ab (patch)
tree57e1ee0f3cef078ec144ecdf1b2fa861acf47755 /lua/mason-registry/index
parentchore: autogenerate (#1015) (diff)
downloadmason-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')
-rw-r--r--lua/mason-registry/index/actionlint/init.lua55
-rw-r--r--lua/mason-registry/index/ada-language-server/init.lua40
-rw-r--r--lua/mason-registry/index/alex/init.lua11
-rw-r--r--lua/mason-registry/index/angular-language-server/init.lua16
-rw-r--r--lua/mason-registry/index/ansible-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/ansible-lint/init.lua15
-rw-r--r--lua/mason-registry/index/antlers-language-server/init.lua15
-rw-r--r--lua/mason-registry/index/apex-language-server/init.lua43
-rw-r--r--lua/mason-registry/index/arduino-language-server/init.lua44
-rw-r--r--lua/mason-registry/index/asm-lsp/init.lua13
-rw-r--r--lua/mason-registry/index/astro-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/autoflake/init.lua11
-rw-r--r--lua/mason-registry/index/autopep8/init.lua11
-rw-r--r--lua/mason-registry/index/awk-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/bash-debug-adapter/init.lua44
-rw-r--r--lua/mason-registry/index/bash-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/beancount-language-server/init.lua13
-rw-r--r--lua/mason-registry/index/beautysh/init.lua11
-rw-r--r--lua/mason-registry/index/bicep-lsp/init.lua42
-rw-r--r--lua/mason-registry/index/black/init.lua11
-rw-r--r--lua/mason-registry/index/blackd-client/init.lua31
-rw-r--r--lua/mason-registry/index/blade-formatter/init.lua11
-rw-r--r--lua/mason-registry/index/blue/init.lua17
-rw-r--r--lua/mason-registry/index/brighterscript-formatter/init.lua11
-rw-r--r--lua/mason-registry/index/brighterscript/init.lua11
-rw-r--r--lua/mason-registry/index/bsl-language-server/init.lua33
-rw-r--r--lua/mason-registry/index/buf-language-server/init.lua14
-rw-r--r--lua/mason-registry/index/buf/init.lua39
-rw-r--r--lua/mason-registry/index/buildifier/init.lua34
-rw-r--r--lua/mason-registry/index/cbfmt/init.lua49
-rw-r--r--lua/mason-registry/index/cfn-lint/init.lua15
-rw-r--r--lua/mason-registry/index/chrome-debug-adapter/init.lua32
-rw-r--r--lua/mason-registry/index/clang-format/init.lua11
-rw-r--r--lua/mason-registry/index/clangd/init.lua43
-rw-r--r--lua/mason-registry/index/clarity-lsp/init.lua29
-rw-r--r--lua/mason-registry/index/clojure-lsp/init.lua34
-rw-r--r--lua/mason-registry/index/cmake-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/cmakelang/init.lua19
-rw-r--r--lua/mason-registry/index/codelldb/init.lua41
-rw-r--r--lua/mason-registry/index/codeql/init.lua34
-rw-r--r--lua/mason-registry/index/codespell/init.lua11
-rw-r--r--lua/mason-registry/index/colorgen-nvim/init.lua17
-rw-r--r--lua/mason-registry/index/commitlint/init.lua17
-rw-r--r--lua/mason-registry/index/cpplint/init.lua11
-rw-r--r--lua/mason-registry/index/cpptools/init.lua42
-rw-r--r--lua/mason-registry/index/crystalline/init.lua31
-rw-r--r--lua/mason-registry/index/csharp-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/csharpier/init.lua11
-rw-r--r--lua/mason-registry/index/cspell/init.lua11
-rw-r--r--lua/mason-registry/index/css-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/cssmodules-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/cucumber-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/cueimports/init.lua11
-rw-r--r--lua/mason-registry/index/cuelsp/init.lua11
-rw-r--r--lua/mason-registry/index/curlylint/init.lua11
-rw-r--r--lua/mason-registry/index/dart-debug-adapter/init.lua27
-rw-r--r--lua/mason-registry/index/debugpy/init.lua18
-rw-r--r--lua/mason-registry/index/delve/init.lua11
-rw-r--r--lua/mason-registry/index/deno/init.lua33
-rw-r--r--lua/mason-registry/index/dhall-lsp/init.lua75
-rw-r--r--lua/mason-registry/index/diagnostic-languageserver/init.lua11
-rw-r--r--lua/mason-registry/index/djlint/init.lua19
-rw-r--r--lua/mason-registry/index/docker-compose-language-service/init.lua12
-rw-r--r--lua/mason-registry/index/dockerfile-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/dot-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/dprint/init.lua32
-rw-r--r--lua/mason-registry/index/drools-lsp/init.lua23
-rw-r--r--lua/mason-registry/index/editorconfig-checker/init.lua35
-rw-r--r--lua/mason-registry/index/efm/init.lua11
-rw-r--r--lua/mason-registry/index/elixir-ls/init.lua28
-rw-r--r--lua/mason-registry/index/elm-format/init.lua11
-rw-r--r--lua/mason-registry/index/elm-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/ember-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/emmet-ls/init.lua11
-rw-r--r--lua/mason-registry/index/erb-lint/init.lua11
-rw-r--r--lua/mason-registry/index/erg-language-server/init.lua45
-rw-r--r--lua/mason-registry/index/erg/init.lua43
-rw-r--r--lua/mason-registry/index/erlang-ls/init.lua40
-rw-r--r--lua/mason-registry/index/esbonio/init.lua11
-rw-r--r--lua/mason-registry/index/eslint-lsp/init.lua15
-rw-r--r--lua/mason-registry/index/eslint_d/init.lua11
-rw-r--r--lua/mason-registry/index/fantomas/init.lua11
-rw-r--r--lua/mason-registry/index/fennel-language-server/init.lua17
-rw-r--r--lua/mason-registry/index/firefox-debug-adapter/init.lua28
-rw-r--r--lua/mason-registry/index/fixjson/init.lua13
-rw-r--r--lua/mason-registry/index/flake8/init.lua15
-rw-r--r--lua/mason-registry/index/flux-lsp/init.lua17
-rw-r--r--lua/mason-registry/index/foam-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/fortls/init.lua11
-rw-r--r--lua/mason-registry/index/fourmolu/init.lua34
-rw-r--r--lua/mason-registry/index/fsautocomplete/init.lua13
-rw-r--r--lua/mason-registry/index/gersemi/init.lua16
-rw-r--r--lua/mason-registry/index/gitlint/init.lua11
-rw-r--r--lua/mason-registry/index/gitui/init.lua34
-rw-r--r--lua/mason-registry/index/glint/init.lua22
-rw-r--r--lua/mason-registry/index/glow/init.lua47
-rw-r--r--lua/mason-registry/index/go-debug-adapter/init.lua27
-rw-r--r--lua/mason-registry/index/gofumpt/init.lua11
-rw-r--r--lua/mason-registry/index/goimports-reviser/init.lua38
-rw-r--r--lua/mason-registry/index/goimports/init.lua15
-rw-r--r--lua/mason-registry/index/golangci-lint-langserver/init.lua11
-rw-r--r--lua/mason-registry/index/golangci-lint/init.lua56
-rw-r--r--lua/mason-registry/index/golines/init.lua11
-rw-r--r--lua/mason-registry/index/gomodifytags/init.lua11
-rw-r--r--lua/mason-registry/index/google-java-format/init.lua33
-rw-r--r--lua/mason-registry/index/gopls/init.lua15
-rw-r--r--lua/mason-registry/index/gospel/init.lua11
-rw-r--r--lua/mason-registry/index/gotests/init.lua15
-rw-r--r--lua/mason-registry/index/gotestsum/init.lua15
-rw-r--r--lua/mason-registry/index/gradle-language-server/init.lua34
-rw-r--r--lua/mason-registry/index/grammarly-languageserver/init.lua11
-rw-r--r--lua/mason-registry/index/graphql-language-service-cli/init.lua11
-rw-r--r--lua/mason-registry/index/groovy-language-server/init.lua33
-rw-r--r--lua/mason-registry/index/hadolint/init.lua33
-rw-r--r--lua/mason-registry/index/haml-lint/init.lua15
-rw-r--r--lua/mason-registry/index/haskell-language-server/init.lua55
-rw-r--r--lua/mason-registry/index/haxe-language-server/init.lua26
-rw-r--r--lua/mason-registry/index/hoon-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/html-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/iferr/init.lua11
-rw-r--r--lua/mason-registry/index/impl/init.lua11
-rw-r--r--lua/mason-registry/index/init.lua283
-rw-r--r--lua/mason-registry/index/intelephense/init.lua11
-rw-r--r--lua/mason-registry/index/isort/init.lua11
-rw-r--r--lua/mason-registry/index/java-debug-adapter/init.lua25
-rw-r--r--lua/mason-registry/index/java-test/init.lua37
-rw-r--r--lua/mason-registry/index/jdtls/init.lua61
-rw-r--r--lua/mason-registry/index/jedi-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/joker/init.lua31
-rw-r--r--lua/mason-registry/index/jq-lsp/init.lua15
-rw-r--r--lua/mason-registry/index/jq/init.lua34
-rw-r--r--lua/mason-registry/index/js-debug-adapter/init.lua28
-rw-r--r--lua/mason-registry/index/json-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/json-to-struct/init.lua11
-rw-r--r--lua/mason-registry/index/jsonlint/init.lua13
-rw-r--r--lua/mason-registry/index/jsonnet-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/julia-lsp/init.lua86
-rw-r--r--lua/mason-registry/index/kotlin-debug-adapter/init.lua30
-rw-r--r--lua/mason-registry/index/kotlin-language-server/init.lua30
-rw-r--r--lua/mason-registry/index/ktlint/init.lua40
-rw-r--r--lua/mason-registry/index/latexindent/init.lua36
-rw-r--r--lua/mason-registry/index/lelwel/init.lua14
-rw-r--r--lua/mason-registry/index/lemminx/init.lua33
-rw-r--r--lua/mason-registry/index/lemmy-help/init.lua45
-rw-r--r--lua/mason-registry/index/ltex-ls/init.lua75
-rw-r--r--lua/mason-registry/index/lua-language-server/init.lua64
-rw-r--r--lua/mason-registry/index/luacheck/init.lua13
-rw-r--r--lua/mason-registry/index/luaformatter/init.lua14
-rw-r--r--lua/mason-registry/index/luau-lsp/init.lua30
-rw-r--r--lua/mason-registry/index/markdownlint/init.lua11
-rw-r--r--lua/mason-registry/index/marksman/init.lua32
-rw-r--r--lua/mason-registry/index/metamath-zero-lsp/init.lua24
-rw-r--r--lua/mason-registry/index/misspell/init.lua11
-rw-r--r--lua/mason-registry/index/mockdebug/init.lua31
-rw-r--r--lua/mason-registry/index/move-analyzer/init.lua16
-rw-r--r--lua/mason-registry/index/mypy/init.lua11
-rw-r--r--lua/mason-registry/index/neocmakelsp/init.lua11
-rw-r--r--lua/mason-registry/index/netcoredbg/init.lua42
-rw-r--r--lua/mason-registry/index/nginx-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/nickel-lang-lsp/init.lua17
-rw-r--r--lua/mason-registry/index/nil/init.lua17
-rw-r--r--lua/mason-registry/index/nimlsp/init.lua22
-rw-r--r--lua/mason-registry/index/node-debug2-adapter/init.lua36
-rw-r--r--lua/mason-registry/index/nxls/init.lua13
-rw-r--r--lua/mason-registry/index/ocaml-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/ocamlformat/init.lua15
-rw-r--r--lua/mason-registry/index/omnisharp-mono/init.lua48
-rw-r--r--lua/mason-registry/index/omnisharp/init.lua46
-rw-r--r--lua/mason-registry/index/opencl-language-server/init.lua44
-rw-r--r--lua/mason-registry/index/openscad-lsp/init.lua13
-rw-r--r--lua/mason-registry/index/perlnavigator/init.lua23
-rw-r--r--lua/mason-registry/index/php-cs-fixer/init.lua37
-rw-r--r--lua/mason-registry/index/php-debug-adapter/init.lua27
-rw-r--r--lua/mason-registry/index/phpactor/init.lua29
-rw-r--r--lua/mason-registry/index/phpcbf/init.lua33
-rw-r--r--lua/mason-registry/index/phpcs/init.lua33
-rw-r--r--lua/mason-registry/index/phpmd/init.lua36
-rw-r--r--lua/mason-registry/index/phpstan/init.lua36
-rw-r--r--lua/mason-registry/index/pint/init.lua16
-rw-r--r--lua/mason-registry/index/powershell-editor-services/init.lua21
-rw-r--r--lua/mason-registry/index/prettier/init.lua26
-rw-r--r--lua/mason-registry/index/prettierd/init.lua26
-rw-r--r--lua/mason-registry/index/prisma-language-server/init.lua15
-rw-r--r--lua/mason-registry/index/proselint/init.lua15
-rw-r--r--lua/mason-registry/index/prosemd-lsp/init.lua32
-rw-r--r--lua/mason-registry/index/protolint/init.lua36
-rw-r--r--lua/mason-registry/index/psalm/init.lua20
-rw-r--r--lua/mason-registry/index/puppet-editor-services/init.lua26
-rw-r--r--lua/mason-registry/index/purescript-language-server/init.lua16
-rw-r--r--lua/mason-registry/index/pydocstyle/init.lua11
-rw-r--r--lua/mason-registry/index/pylama/init.lua11
-rw-r--r--lua/mason-registry/index/pylint/init.lua11
-rw-r--r--lua/mason-registry/index/pyproject-flake8/init.lua11
-rw-r--r--lua/mason-registry/index/pyre/init.lua11
-rw-r--r--lua/mason-registry/index/pyright/init.lua11
-rw-r--r--lua/mason-registry/index/python-lsp-server/init.lua11
-rw-r--r--lua/mason-registry/index/quick-lint-js/init.lua53
-rw-r--r--lua/mason-registry/index/r-languageserver/init.lua87
-rw-r--r--lua/mason-registry/index/raku-navigator/init.lua22
-rw-r--r--lua/mason-registry/index/reason-language-server/init.lua38
-rw-r--r--lua/mason-registry/index/remark-cli/init.lua11
-rw-r--r--lua/mason-registry/index/remark-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/reorder-python-imports/init.lua11
-rw-r--r--lua/mason-registry/index/rescript-lsp/init.lua36
-rw-r--r--lua/mason-registry/index/revive/init.lua11
-rw-r--r--lua/mason-registry/index/rnix-lsp/init.lua13
-rw-r--r--lua/mason-registry/index/robotframework-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/rome/init.lua11
-rw-r--r--lua/mason-registry/index/rstcheck/init.lua11
-rw-r--r--lua/mason-registry/index/rubocop/init.lua11
-rw-r--r--lua/mason-registry/index/ruby-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/ruff-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/ruff/init.lua11
-rw-r--r--lua/mason-registry/index/rust-analyzer/init.lua53
-rw-r--r--lua/mason-registry/index/rustfmt/init.lua40
-rw-r--r--lua/mason-registry/index/rustywind/init.lua18
-rw-r--r--lua/mason-registry/index/salt-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/selene/init.lua34
-rw-r--r--lua/mason-registry/index/semgrep/init.lua22
-rw-r--r--lua/mason-registry/index/serve-d/init.lua51
-rw-r--r--lua/mason-registry/index/shellcheck/init.lua42
-rw-r--r--lua/mason-registry/index/shellharden/init.lua11
-rw-r--r--lua/mason-registry/index/shfmt/init.lua33
-rw-r--r--lua/mason-registry/index/shopify-theme-check/init.lua11
-rw-r--r--lua/mason-registry/index/slint-lsp/init.lua36
-rw-r--r--lua/mason-registry/index/smithy-language-server/init.lua38
-rw-r--r--lua/mason-registry/index/solang/init.lua63
-rw-r--r--lua/mason-registry/index/solargraph/init.lua11
-rw-r--r--lua/mason-registry/index/solhint/init.lua11
-rw-r--r--lua/mason-registry/index/solidity-ls/init.lua11
-rw-r--r--lua/mason-registry/index/solidity/init.lua32
-rw-r--r--lua/mason-registry/index/sorbet/init.lua11
-rw-r--r--lua/mason-registry/index/sourcery/init.lua15
-rw-r--r--lua/mason-registry/index/spectral-language-server/init.lua35
-rw-r--r--lua/mason-registry/index/sql-formatter/init.lua11
-rw-r--r--lua/mason-registry/index/sqlfluff/init.lua11
-rw-r--r--lua/mason-registry/index/sqlls/init.lua11
-rw-r--r--lua/mason-registry/index/sqls/init.lua11
-rw-r--r--lua/mason-registry/index/standardrb/init.lua11
-rw-r--r--lua/mason-registry/index/staticcheck/init.lua11
-rw-r--r--lua/mason-registry/index/stylelint-lsp/init.lua11
-rw-r--r--lua/mason-registry/index/stylua/init.lua31
-rw-r--r--lua/mason-registry/index/svelte-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/svlangserver/init.lua15
-rw-r--r--lua/mason-registry/index/svls/init.lua13
-rw-r--r--lua/mason-registry/index/tailwindcss-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/taplo/init.lua51
-rw-r--r--lua/mason-registry/index/teal-language-server/init.lua14
-rw-r--r--lua/mason-registry/index/tectonic/init.lua62
-rw-r--r--lua/mason-registry/index/terraform-ls/init.lua47
-rw-r--r--lua/mason-registry/index/texlab/init.lua43
-rw-r--r--lua/mason-registry/index/textlint/init.lua11
-rw-r--r--lua/mason-registry/index/tflint/init.lua32
-rw-r--r--lua/mason-registry/index/twigcs/init.lua36
-rw-r--r--lua/mason-registry/index/typescript-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/unocss-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/usort/init.lua11
-rw-r--r--lua/mason-registry/index/vacuum/init.lua43
-rw-r--r--lua/mason-registry/index/vala-language-server/init.lua36
-rw-r--r--lua/mason-registry/index/vale/init.lua49
-rw-r--r--lua/mason-registry/index/verible/init.lua101
-rw-r--r--lua/mason-registry/index/veryl-ls/init.lua13
-rw-r--r--lua/mason-registry/index/vetur-vls/init.lua11
-rw-r--r--lua/mason-registry/index/vim-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/vint/init.lua11
-rw-r--r--lua/mason-registry/index/visualforce-language-server/init.lua34
-rw-r--r--lua/mason-registry/index/vls/init.lua35
-rw-r--r--lua/mason-registry/index/vtsls/init.lua11
-rw-r--r--lua/mason-registry/index/vue-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/vulture/init.lua19
-rw-r--r--lua/mason-registry/index/wgsl-analyzer/init.lua17
-rw-r--r--lua/mason-registry/index/write-good/init.lua11
-rw-r--r--lua/mason-registry/index/xmlformatter/init.lua17
-rw-r--r--lua/mason-registry/index/xo/init.lua14
-rw-r--r--lua/mason-registry/index/yaml-language-server/init.lua11
-rw-r--r--lua/mason-registry/index/yamlfmt/init.lua35
-rw-r--r--lua/mason-registry/index/yamllint/init.lua15
-rw-r--r--lua/mason-registry/index/yapf/init.lua11
-rw-r--r--lua/mason-registry/index/zk/init.lua55
-rw-r--r--lua/mason-registry/index/zls/init.lua36
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,
+}