From f5b1a206c4335e1ccfd4f68feef63ba8950e3e90 Mon Sep 17 00:00:00 2001 From: Jay Patel <36803168+jayp0521@users.noreply.github.com> Date: Sun, 6 Nov 2022 19:54:52 -0500 Subject: feat(registry): add rustfmt (#642) --- lua/mason-registry/index.lua | 1 + lua/mason-registry/rustfmt/init.lua | 32 ++++++++++++++++++++++++++++++++ lua/mason/mappings/language.lua | 2 +- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 lua/mason-registry/rustfmt/init.lua (limited to 'lua') diff --git a/lua/mason-registry/index.lua b/lua/mason-registry/index.lua index 8cbbb8cb..4f326a3f 100644 --- a/lua/mason-registry/index.lua +++ b/lua/mason-registry/index.lua @@ -185,6 +185,7 @@ return { rubocop = "mason-registry.rubocop", ["ruby-lsp"] = "mason-registry.ruby-lsp", ["rust-analyzer"] = "mason-registry.rust-analyzer", + rustfmt = "mason-registry.rustfmt", ["salt-lsp"] = "mason-registry.salt-lsp", selene = "mason-registry.selene", ["serve-d"] = "mason-registry.serve-d", diff --git a/lua/mason-registry/rustfmt/init.lua b/lua/mason-registry/rustfmt/init.lua new file mode 100644 index 00000000..e8a03daf --- /dev/null +++ b/lua/mason-registry/rustfmt/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 = "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 }, + 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 = "rust-lang/rustfmt", + asset_file = coalesce( + when(platform.is.mac, release_file "rustfmt_macos-x86_64_%s.tar.gz"), + when(platform.is.linux_x64, release_file "rustfmt_linux-x86_64_%s.tar.gz"), + when(platform.is.win_x64, release_file "rustfmt_windows-x86_64-msvc_%s.tar.gz") + ), + }) + .with_receipt() + ctx:link_bin("rustfmt", platform.is.win and "rustfmt.exe" or "rustfmt") + end, +} diff --git a/lua/mason/mappings/language.lua b/lua/mason/mappings/language.lua index e2bb1b8f..062b44c4 100644 --- a/lua/mason/mappings/language.lua +++ b/lua/mason/mappings/language.lua @@ -98,7 +98,7 @@ return { rescript = { "rescript-lsp" }, ["robot framework"] = { "robotframework-lsp" }, ruby = { "erb-lint", "rubocop", "ruby-lsp", "solargraph", "sorbet", "standardrb" }, - rust = { "codelldb", "cpptools", "rust-analyzer" }, + rust = { "codelldb", "cpptools", "rust-analyzer", "rustfmt" }, salt = { "salt-lsp" }, scss = { "css-lsp", "prettier", "prettierd" }, sh = { "beautysh" }, -- cgit v1.2.3-70-g09d2