diff options
Diffstat (limited to 'scripts/lua/mason-scripts')
| -rw-r--r-- | scripts/lua/mason-scripts/markdown.lua | 96 | ||||
| -rw-r--r-- | scripts/lua/mason-scripts/mason-schemas/generate.lua | 63 | ||||
| -rw-r--r-- | scripts/lua/mason-scripts/mason/generate.lua | 42 | ||||
| -rw-r--r-- | scripts/lua/mason-scripts/mason/generate_package_index.lua | 25 | ||||
| -rw-r--r-- | scripts/lua/mason-scripts/templates/PACKAGES.template.md | 10 | ||||
| -rw-r--r-- | scripts/lua/mason-scripts/templates/package-section.template.md | 11 | ||||
| -rw-r--r-- | scripts/lua/mason-scripts/utils.lua | 33 |
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 |
