diff options
| author | William Boman <william@redwill.se> | 2022-09-26 11:50:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-26 11:50:52 +0200 |
| commit | e0268a6ae63479af4a49b961394dd34521159920 (patch) | |
| tree | fa02e9c56dd420679bad8b6591c10152be270891 /lua | |
| parent | docs: fix readme :help reference (#462) (diff) | |
| download | mason-e0268a6ae63479af4a49b961394dd34521159920.tar mason-e0268a6ae63479af4a49b961394dd34521159920.tar.gz mason-e0268a6ae63479af4a49b961394dd34521159920.tar.bz2 mason-e0268a6ae63479af4a49b961394dd34521159920.tar.lz mason-e0268a6ae63479af4a49b961394dd34521159920.tar.xz mason-e0268a6ae63479af4a49b961394dd34521159920.tar.zst mason-e0268a6ae63479af4a49b961394dd34521159920.zip | |
fix(spectral-language-server): build directly from source (#464)
The npm package is an unofficial one, and it seems to be relying on a
build script (broken) to execute during installation, instead of pre-packaging
it.
Fixes #463.
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-core/managers/github/init.lua | 1 | ||||
| -rw-r--r-- | lua/mason-registry/spectral-language-server/init.lua | 21 |
2 files changed, 19 insertions, 3 deletions
diff --git a/lua/mason-core/managers/github/init.lua b/lua/mason-core/managers/github/init.lua index ebf98164..5746f1cf 100644 --- a/lua/mason-core/managers/github/init.lua +++ b/lua/mason-core/managers/github/init.lua @@ -18,7 +18,6 @@ local M = {} ---@param asset_file string ---@param release string local function with_release_file_receipt(repo, asset_file, release) - ---@return InstallReceiptGitHubReleaseFileSource return function() local ctx = installer.context() ctx.receipt:with_primary_source { diff --git a/lua/mason-registry/spectral-language-server/init.lua b/lua/mason-registry/spectral-language-server/init.lua index d49f73c0..58dc2348 100644 --- a/lua/mason-registry/spectral-language-server/init.lua +++ b/lua/mason-registry/spectral-language-server/init.lua @@ -1,6 +1,9 @@ local Pkg = require "mason-core.package" -local npm = require "mason-core.managers.npm" +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", @@ -11,5 +14,19 @@ return Pkg.new { homepage = "https://github.com/luizcorreia/spectral-language-server", languages = { Pkg.Lang.JSON, Pkg.Lang.YAML }, categories = { Pkg.Cat.LSP }, - install = npm.packages { "spectral-language-server", bin = { "spectral-language-server" } }, + ---@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:write_node_exec_wrapper("spectral-language-server", "spectral-language-server.js") + end, } |
