aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-08 14:54:32 +0200
committerGitHub <noreply@github.com>2022-07-08 14:54:32 +0200
commita5d0b9a6233c7111859bbc10105d265084ac02f0 (patch)
tree1dad3073b7a787efc647acf3e442db8e356c2765 /lua
parentfix!: remove dart-debug-adapter (#14) (diff)
downloadmason-a5d0b9a6233c7111859bbc10105d265084ac02f0.tar
mason-a5d0b9a6233c7111859bbc10105d265084ac02f0.tar.gz
mason-a5d0b9a6233c7111859bbc10105d265084ac02f0.tar.bz2
mason-a5d0b9a6233c7111859bbc10105d265084ac02f0.tar.lz
mason-a5d0b9a6233c7111859bbc10105d265084ac02f0.tar.xz
mason-a5d0b9a6233c7111859bbc10105d265084ac02f0.tar.zst
mason-a5d0b9a6233c7111859bbc10105d265084ac02f0.zip
feat: add firefox-debug-adapter (#16)
Diffstat (limited to 'lua')
-rw-r--r--lua/mason/_generated/package_index.lua1
-rw-r--r--lua/mason/core/installer/context.lua16
-rw-r--r--lua/mason/packages/firefox-debug-adapter/init.lua27
-rw-r--r--lua/mason/packages/firefox-debug-adapter/patches.lua34
4 files changed, 78 insertions, 0 deletions
diff --git a/lua/mason/_generated/package_index.lua b/lua/mason/_generated/package_index.lua
index 44f26273..939e3597 100644
--- a/lua/mason/_generated/package_index.lua
+++ b/lua/mason/_generated/package_index.lua
@@ -42,6 +42,7 @@ return {
["erlang-ls"] = "mason.packages.erlang-ls",
esbonio = "mason.packages.esbonio",
["eslint-lsp"] = "mason.packages.eslint-lsp",
+ ["firefox-debug-adapter"] = "mason.packages.firefox-debug-adapter",
["flux-lsp"] = "mason.packages.flux-lsp",
["foam-language-server"] = "mason.packages.foam-language-server",
fortls = "mason.packages.fortls",
diff --git a/lua/mason/core/installer/context.lua b/lua/mason/core/installer/context.lua
index ea5a7b90..1cdfc197 100644
--- a/lua/mason/core/installer/context.lua
+++ b/lua/mason/core/installer/context.lua
@@ -259,4 +259,20 @@ function InstallContext:link_bin(executable, rel_path)
self.receipt:with_link("bin", executable, rel_path)
end
+---@param patches string[]
+function InstallContext:apply_patches(patches)
+ for _, patch in ipairs(patches) do
+ self.spawn.patch {
+ "-g",
+ "0",
+ "-f",
+ on_spawn = function(_, stdio)
+ local stdin = stdio[1]
+ stdin:write(patch)
+ stdin:close()
+ end,
+ }
+ end
+end
+
return InstallContext
diff --git a/lua/mason/packages/firefox-debug-adapter/init.lua b/lua/mason/packages/firefox-debug-adapter/init.lua
new file mode 100644
index 00000000..ac627a7c
--- /dev/null
+++ b/lua/mason/packages/firefox-debug-adapter/init.lua
@@ -0,0 +1,27 @@
+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:apply_patches(require "mason.packages.firefox-debug-adapter.patches")
+ ctx.spawn.npm { "install" }
+ ctx.spawn.npm { "run", "build" }
+ ctx.spawn.npm { "install", "--production" }
+ ctx:write_node_exec_wrapper("firefox-debug-adapter", path.concat { "dist", "adapter.bundle.js" })
+ ctx:link_bin("firefox-debug-adapter", "firefox-debug-adapter")
+ end,
+}
diff --git a/lua/mason/packages/firefox-debug-adapter/patches.lua b/lua/mason/packages/firefox-debug-adapter/patches.lua
new file mode 100644
index 00000000..2760d67c
--- /dev/null
+++ b/lua/mason/packages/firefox-debug-adapter/patches.lua
@@ -0,0 +1,34 @@
+local fix_macos_build = [=====[
+diff --git a/webpack.config.js b/webpack.config.js
+index 9aff0cf..ff9c74e 100644
+--- a/webpack.config.js
++++ b/webpack.config.js
+@@ -1,6 +1,14 @@
+ const path = require('path');
+ const CopyPlugin = require('copy-webpack-plugin');
+
++const externals = {
++ vscode: 'commonjs vscode',
++};
++
++if (process.platform === "darwin") {
++ externals["fsevents"] = 'commonjs fsevents';
++}
++
+ module.exports = {
+ context: path.resolve(__dirname, 'src'),
+ entry: {
+@@ -19,9 +27,7 @@ module.exports = {
+ }
+ ]
+ },
+- externals: {
+- vscode: 'commonjs vscode'
+- },
++ externals,
+ output: {
+ path: path.resolve(__dirname, 'dist'),
+ filename: '[name].bundle.js',
+]=====]
+
+return { fix_macos_build }