aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/lua/mason-scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lua/mason-scripts')
-rw-r--r--scripts/lua/mason-scripts/markdown.lua96
-rw-r--r--scripts/lua/mason-scripts/mason-schemas/generate.lua63
-rw-r--r--scripts/lua/mason-scripts/mason/generate.lua42
-rw-r--r--scripts/lua/mason-scripts/mason/generate_package_index.lua25
-rw-r--r--scripts/lua/mason-scripts/templates/PACKAGES.template.md10
-rw-r--r--scripts/lua/mason-scripts/templates/package-section.template.md11
-rw-r--r--scripts/lua/mason-scripts/utils.lua33
7 files changed, 0 insertions, 280 deletions
diff --git a/scripts/lua/mason-scripts/markdown.lua b/scripts/lua/mason-scripts/markdown.lua
deleted file mode 100644
index 3cc5ffa5..00000000
--- a/scripts/lua/mason-scripts/markdown.lua
+++ /dev/null
@@ -1,96 +0,0 @@
-local _ = require "mason-core.functional"
-local fs = require "mason-core.fs"
-local path = require "mason-core.path"
-local script_utils = require "mason-scripts.utils"
-
-local M = {}
-
----Direct context access syntax (e.g. "{{ value }}" or "{{ nested.value }}")
----@param context table<string, any>
----@param str string
-local prop_interpolate = _.curryN(function(context, str)
- return _.gsub("{{%s?([%w_%.0-9]+)%s?}}", function(key)
- return vim.tbl_get(context, unpack(_.split("%.", key)))
- end, str)
-end, 2)
-
-local TEMPLATE_GLOBALS = {
- _ = _,
- url = function(url)
- return ("[%s](%s)"):format(url, url)
- end,
- link = function(heading)
- -- TODO turn heading into valid string, not needed for now
- return ("[%s](#%s)"):format(heading, heading)
- end,
- wrap = _.curryN(function(wrap, str)
- return ("%s%s%s"):format(wrap, str, wrap)
- end, 2),
- list = _.compose(_.join "\n", _.map(_.format "- %s")),
- join = _.curryN(function(items, delim)
- return _.join(delim, items)
- end, 2),
- each = _.curryN(function(items, format)
- local formatter = _.cond {
- { _.is "function", _.identity },
- {
- _.is "string",
- function(template)
- return function(item)
- return prop_interpolate({ it = item }, template)
- end
- end,
- },
- }(format)
- return _.map(formatter, items)
- end, 2),
- render_each = _.curryN(function(items, template_file)
- return _.map(M.render(template_file), items)
- end, 2),
-}
-
----Expression syntax (e.g. "{% "hello world" %}" or "{% join({"One", "Two"}), "\n" %}")
----@param context table<string, any>
----@param str string
-local expr_interpolate = _.curryN(function(context, str)
- return _.gsub(
- [[{%%%s?([%w%-_%.0-9%(%)%[%]%s%+%*,"/\|=%{%}`]+)%s?%%}]], -- giggity
- function(expr)
- local eval_result =
- setfenv(loadstring(("return %s"):format(expr)), setmetatable(TEMPLATE_GLOBALS, { __index = context }))()
-
- if type(eval_result) == "table" then
- -- expressions may return tables for convenience reasons
- return _.join("", eval_result)
- else
- return eval_result
- end
- end,
- str
- )
-end, 2)
-
-local header_interpolate = _.curryN(function(context, str)
- return _.gsub([[{#%s?([%w%s_%-%.0-9/"]+)%s?#}]], function(header)
- setfenv(loadstring(header), {
- include = function(file)
- local mod = require(("mason-scripts.templates.%s"):format(file))
- for k, v in pairs(mod) do
- context[k] = v
- end
- end,
- })()
- return ""
- end, str)
-end, 2)
-
----@param template_file string
----@param context table<string, string>
-M.render = _.curryN(function(template_file, context)
- local template = fs.sync.read_file(script_utils.rel_path(path.concat { "templates", template_file }))
- local interpolate = _.compose(prop_interpolate(context), expr_interpolate(context), header_interpolate(context))
- local formatted_template = interpolate(template)
- return formatted_template
-end, 2)
-
-return M
diff --git a/scripts/lua/mason-scripts/mason-schemas/generate.lua b/scripts/lua/mason-scripts/mason-schemas/generate.lua
deleted file mode 100644
index b41d6558..00000000
--- a/scripts/lua/mason-scripts/mason-schemas/generate.lua
+++ /dev/null
@@ -1,63 +0,0 @@
-local _ = require "mason-core.functional"
-local a = require "mason-core.async"
-local fetch = require "mason-core.fetch"
-local lspconfig_server_mapping = require "mason-lspconfig.mappings.server"
-local path = require "mason-core.path"
-local script_utils = require "mason-scripts.utils"
-
-local MASON_SCHEMAS_DIR = path.concat { vim.loop.cwd(), "lua", "mason-schemas" }
-
----@async
-local function create_lsp_setting_schema_files()
- local lsp_schemas_path = path.concat { MASON_SCHEMAS_DIR, "lsp" }
-
- for _, file in
- ipairs(vim.fn.glob(
- path.concat {
- lsp_schemas_path,
- "*",
- },
- 1,
- 1
- ))
- do
- print("Deleting " .. file)
- vim.fn.delete(file)
- end
-
- local gist_data = fetch(
- "https://gist.githubusercontent.com/williamboman/a01c3ce1884d4b57cc93422e7eae7702/raw/lsp-packages.json"
- ):get_or_throw()
- local package_json_mappings = vim.json.decode(gist_data)
-
- for _, server_name in ipairs(_.keys(lspconfig_server_mapping.lspconfig_to_package)) do
- local package_json_url = package_json_mappings[server_name]
- if package_json_url then
- print(("Fetching %q..."):format(package_json_url))
- local response = fetch(package_json_url):get_or_throw()
- local schema = vim.json.decode(response)
- if schema.contributes and schema.contributes.configuration then
- schema = schema.contributes.configuration
- end
- if not schema.properties then
- -- Some servers (like dartls) seem to provide an array of configurations (for more than just LSP stuff)
- print(("Could not find appropriate schema structure for %s."):format(server_name))
- else
- script_utils.write_file(
- path.concat {
- lsp_schemas_path,
- ("%s.lua"):format(lspconfig_server_mapping.lspconfig_to_package[server_name]),
- },
- "return " .. vim.inspect(schema, { newline = "", indent = "" }),
- "w"
- )
- end
- end
- end
-end
-
-a.run_blocking(function()
- a.wait_all {
- create_lsp_setting_schema_files,
- }
-end)
diff --git a/scripts/lua/mason-scripts/mason/generate.lua b/scripts/lua/mason-scripts/mason/generate.lua
deleted file mode 100644
index a0590f61..00000000
--- a/scripts/lua/mason-scripts/mason/generate.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-local _ = require "mason-core.functional"
-local a = require "mason-core.async"
-local path = require "mason-core.path"
-local script_utils = require "mason-scripts.utils"
-
-local MASON_DIR = path.concat { vim.loop.cwd(), "lua", "mason" }
-
-require("mason").setup()
-local registry = require "mason-registry"
-
----@async
-local function create_language_map()
- print "Creating language map…"
- local indexed_languages = {}
- local language_map = {}
- local sorted_packages = _.sort_by(_.prop "name", registry.get_all_packages())
- _.each(function(pkg)
- _.each(function(language)
- local language_lc = language:lower()
- if indexed_languages[language_lc] and indexed_languages[language_lc] ~= language then
- error(
- ("Found two variants of same language with differing cases %s != %s"):format(
- indexed_languages[language_lc],
- language
- )
- )
- end
- indexed_languages[language_lc] = language
- language_map[language_lc] = _.append(pkg.name, language_map[language_lc] or {})
- end, pkg.spec.languages)
- end, sorted_packages)
-
- script_utils.write_file(
- path.concat { MASON_DIR, "mappings", "language.lua" },
- "return " .. vim.inspect(language_map),
- "w"
- )
-end
-a.run_blocking(function()
- assert(a.wait(registry.update), "Failed to update registry.")
- create_language_map()
-end)
diff --git a/scripts/lua/mason-scripts/mason/generate_package_index.lua b/scripts/lua/mason-scripts/mason/generate_package_index.lua
deleted file mode 100644
index 9b537b97..00000000
--- a/scripts/lua/mason-scripts/mason/generate_package_index.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-local _ = require "mason-core.functional"
-local a = require "mason-core.async"
-local markdown = require "mason-scripts.markdown"
-local script_utils = require "mason-scripts.utils"
-
-require("mason").setup()
-local registry = require "mason-registry"
-
----@async
-local function create_markdown_index()
- print "Creating markdown index…"
- local packages = _.sort_by(_.prop "name", registry.get_all_packages())
-
- script_utils.write_file(
- "PACKAGES.md",
- markdown.render("PACKAGES.template.md", {
- ["packages"] = packages,
- })
- )
-end
-
-a.run_blocking(function()
- assert(a.wait(registry.update), "Failed to update registry.")
- create_markdown_index()
-end)
diff --git a/scripts/lua/mason-scripts/templates/PACKAGES.template.md b/scripts/lua/mason-scripts/templates/PACKAGES.template.md
deleted file mode 100644
index 85c0f005..00000000
--- a/scripts/lua/mason-scripts/templates/PACKAGES.template.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Mason Package Index
-> `:Mason`
-
-{% list(each(packages, _.compose(link, _.prop("name")))) %}
-
-{% render_each(packages) "./package-section.template.md" %}
----
-<sub><sup>
-[https://github.com/williamboman/mason.nvim](https://github.com/williamboman/mason.nvim)
-</sup></sub>
diff --git a/scripts/lua/mason-scripts/templates/package-section.template.md b/scripts/lua/mason-scripts/templates/package-section.template.md
deleted file mode 100644
index 745c6099..00000000
--- a/scripts/lua/mason-scripts/templates/package-section.template.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# {{ name }}
-
-> {{ spec.desc }}
-
-Homepage: {% url(spec.homepage) %}
-Languages: {% join(each(spec.languages, wrap "`")) " " %}
-Categories: {% join(each(spec.categories, wrap "`")) " " %}
-
-```
-:MasonInstall {{ name }}
-```
diff --git a/scripts/lua/mason-scripts/utils.lua b/scripts/lua/mason-scripts/utils.lua
deleted file mode 100644
index 55d86824..00000000
--- a/scripts/lua/mason-scripts/utils.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local Path = require "mason-core.path"
-local _ = require "mason-core.functional"
-local fs = require "mason-core.fs"
-
-local M = {}
-
----@async
----@param path string
----@param contents string
----@param flags string?
-function M.write_file(path, contents, flags)
- local header = _.cond {
- { _.matches "%.md$", _.always { "<!--- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY. -->" } },
- {
- _.matches "%.lua$",
- _.always {
- "-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.",
- "-- stylua: ignore start",
- },
- },
- { _.T, _.always { "// THIS FILE IS GENERATED. DO NOT EDIT MANUALLY." } },
- }(path)
- fs.async.write_file(path, _.join("\n", _.concat(header, { contents })), flags)
-end
-
----@param path string
----@return string
-function M.rel_path(path)
- local script_path = debug.getinfo(2, "S").source:sub(2):match "(.*/)"
- return Path.concat { script_path, path }
-end
-
-return M