aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-09-26 11:50:52 +0200
committerGitHub <noreply@github.com>2022-09-26 11:50:52 +0200
commite0268a6ae63479af4a49b961394dd34521159920 (patch)
treefa02e9c56dd420679bad8b6591c10152be270891 /lua
parentdocs: fix readme :help reference (#462) (diff)
downloadmason-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.lua1
-rw-r--r--lua/mason-registry/spectral-language-server/init.lua21
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,
}