diff options
Diffstat (limited to 'scripts/autogen_metadata.lua')
| -rw-r--r-- | scripts/autogen_metadata.lua | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/scripts/autogen_metadata.lua b/scripts/autogen_metadata.lua deleted file mode 100644 index 736b1bcb..00000000 --- a/scripts/autogen_metadata.lua +++ /dev/null @@ -1,150 +0,0 @@ -local a = require "mason-core.async" -local Path = require "mason-core.path" -local fetch = require "mason-core.fetch" -local _ = require "mason-core.functional" -local fs = require "mason-core.fs" -local registry = require "mason-registry" -local lspconfig_server_mapping = require "mason-lspconfig.mappings.server" - ----@async ----@param path string ----@param contents string ----@param flags string -local function write_file(path, contents, flags) - fs.async.write_file( - path, - table.concat({ - "-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.", - "-- stylua: ignore start", - contents, - }, "\n"), - flags - ) -end - -local function get_lspconfig(name) - return require(("lspconfig.server_configurations.%s"):format(name)) -end - ----@async -local function create_lspconfig_filetype_map() - local filetype_map = {} - - for _, server_name in ipairs(_.keys(lspconfig_server_mapping.lspconfig_to_package)) do - local config = get_lspconfig(server_name) - for _, filetype in ipairs(config.default_config.filetypes or {}) do - if not filetype_map[filetype] then - filetype_map[filetype] = {} - end - table.insert(filetype_map[filetype], server_name) - table.sort(filetype_map[filetype]) - end - end - - write_file( - Path.concat { vim.loop.cwd(), "lua", "mason-lspconfig", "mappings", "filetype.lua" }, - "return " .. vim.inspect(filetype_map), - "w" - ) -end - ----@async -local function create_language_map() - 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() - language_map[language_lc] = _.append(pkg.name, language_map[language_lc] or {}) - end, pkg.spec.languages) - end, sorted_packages) - - write_file( - Path.concat { vim.loop.cwd(), "lua", "mason", "mappings", "language.lua" }, - "return " .. vim.inspect(language_map), - "w" - ) -end - ----@async -local function create_lsp_setting_schema_files() - local lsp_schemas_path = Path.concat { - vim.loop.cwd(), - "lua", - "mason-schemas", - "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 - 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 - ----@async -local function create_package_index() - a.scheduler() - local packages = {} - local to_lua_path = _.compose(_.gsub("/", "."), _.gsub("^lua/", "")) - for _, package_path in ipairs(vim.fn.glob("lua/mason-registry/*/init.lua", false, true)) do - local package_filename = vim.fn.fnamemodify(package_path, ":h:t") - local lua_path = to_lua_path(vim.fn.fnamemodify(package_path, ":h")) - local pkg = require(lua_path) - assert(package_filename == pkg.name, ("Package name is not the same as its module name %s"):format(lua_path)) - packages[pkg.name] = lua_path - end - - write_file( - Path.concat { vim.loop.cwd(), "lua", "mason-registry", "index.lua" }, - "return " .. vim.inspect(packages), - "w" - ) -end - -a.run_blocking(function() - a.wait_all(_.filter(_.identity, { - create_lspconfig_filetype_map, - create_language_map, - not vim.env.SKIP_SCHEMAS and create_lsp_setting_schema_files, - create_package_index, - })) -end) |
