diff options
| author | William Boman <william@redwill.se> | 2023-09-11 00:05:44 +0200 |
|---|---|---|
| committer | William Boman <william@redwill.se> | 2025-02-16 09:32:29 +0100 |
| commit | 2275067747a118d6002f421cb54f28affbc0ef98 (patch) | |
| tree | 79bc1c2580ba96cc1b19e71f2b31f7c4c8ab490c /lua/mason-core/installer | |
| parent | chore(main): release 1.11.0 (#1658) (diff) | |
| download | mason-2275067747a118d6002f421cb54f28affbc0ef98.tar mason-2275067747a118d6002f421cb54f28affbc0ef98.tar.gz mason-2275067747a118d6002f421cb54f28affbc0ef98.tar.bz2 mason-2275067747a118d6002f421cb54f28affbc0ef98.tar.lz mason-2275067747a118d6002f421cb54f28affbc0ef98.tar.xz mason-2275067747a118d6002f421cb54f28affbc0ef98.tar.zst mason-2275067747a118d6002f421cb54f28affbc0ef98.zip | |
refactor!: remove old managers (#1497)
Diffstat (limited to 'lua/mason-core/installer')
| -rw-r--r-- | lua/mason-core/installer/context.lua | 9 | ||||
| -rw-r--r-- | lua/mason-core/installer/managers/common.lua | 2 | ||||
| -rw-r--r-- | lua/mason-core/installer/managers/powershell.lua | 44 | ||||
| -rw-r--r-- | lua/mason-core/installer/managers/pypi.lua | 8 | ||||
| -rw-r--r-- | lua/mason-core/installer/managers/std.lua | 2 |
5 files changed, 58 insertions, 7 deletions
diff --git a/lua/mason-core/installer/context.lua b/lua/mason-core/installer/context.lua index 7637209f..21c9c26f 100644 --- a/lua/mason-core/installer/context.lua +++ b/lua/mason-core/installer/context.lua @@ -303,10 +303,10 @@ end ---@param new_executable_rel_path string Relative path to the executable file to create. ---@param module string The python module to call. function InstallContext:write_pyvenv_exec_wrapper(new_executable_rel_path, module) - local pip3 = require "mason-core.managers.pip3" + local pypi = require "mason-core.installer.managers.pypi" local module_exists, module_err = pcall(function() local result = - self.spawn.python { "-c", ("import %s"):format(module), with_paths = { pip3.venv_path(self.cwd:get()) } } + self.spawn.python { "-c", ("import %s"):format(module), with_paths = { pypi.venv_path(self.cwd:get()) } } if not self.spawn.strict_mode then result:get_or_throw() end @@ -319,7 +319,7 @@ function InstallContext:write_pyvenv_exec_wrapper(new_executable_rel_path, modul new_executable_rel_path, ("%q -m %s"):format( path.concat { - pip3.venv_path(self.package:get_install_path()), + pypi.venv_path(self.package:get_install_path()), "python", }, module @@ -367,14 +367,13 @@ function InstallContext:write_shell_exec_wrapper(new_executable_rel_path, comman end return platform.when { unix = function() - local std = require "mason-core.managers.std" local formatted_envs = _.map(function(pair) local var, value = pair[1], pair[2] return ("export %s=%q"):format(var, value) end, _.to_pairs(env or {})) self.fs:write_file(new_executable_rel_path, BASH_TEMPLATE:format(_.join("\n", formatted_envs), command)) - std.chmod("+x", { new_executable_rel_path }) + self.fs:chmod_exec(new_executable_rel_path) return new_executable_rel_path end, win = function() diff --git a/lua/mason-core/installer/managers/common.lua b/lua/mason-core/installer/managers/common.lua index c730a3aa..c13d3bff 100644 --- a/lua/mason-core/installer/managers/common.lua +++ b/lua/mason-core/installer/managers/common.lua @@ -5,7 +5,7 @@ local async_uv = require "mason-core.async.uv" local installer = require "mason-core.installer" local log = require "mason-core.log" local platform = require "mason-core.platform" -local powershell = require "mason-core.managers.powershell" +local powershell = require "mason-core.installer.managers.powershell" local std = require "mason-core.installer.managers.std" local M = {} diff --git a/lua/mason-core/installer/managers/powershell.lua b/lua/mason-core/installer/managers/powershell.lua new file mode 100644 index 00000000..0e7f4145 --- /dev/null +++ b/lua/mason-core/installer/managers/powershell.lua @@ -0,0 +1,44 @@ +local _ = require "mason-core.functional" +local a = require "mason-core.async" +local process = require "mason-core.process" +local spawn = require "mason-core.spawn" + +local M = {} + +local PWSHOPT = { + progress_preference = [[ $ProgressPreference = 'SilentlyContinue'; ]], -- https://stackoverflow.com/a/63301751 + security_protocol = [[ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; ]], + error_action_preference = [[ $ErrorActionPreference = "Stop"; ]], +} + +local powershell = _.lazy(function() + a.scheduler() + if vim.fn.executable "pwsh" == 1 then + return "pwsh" + else + return "powershell" + end +end) + +---@async +---@param command string +---@param opts SpawnArgs? +---@param custom_spawn JobSpawn? +function M.command(command, opts, custom_spawn) + opts = opts or {} + ---@type JobSpawn + local spawner = custom_spawn or spawn + return spawner[powershell()](vim.tbl_extend("keep", { + "-NoProfile", + "-NonInteractive", + "-Command", + PWSHOPT.error_action_preference .. PWSHOPT.progress_preference .. PWSHOPT.security_protocol .. command, + env_raw = process.graft_env(opts.env or {}, { "PSMODULEPATH" }), + on_spawn = function(_, stdio) + local stdin = stdio[1] + stdin:close() + end, + }, opts)) +end + +return M diff --git a/lua/mason-core/installer/managers/pypi.lua b/lua/mason-core/installer/managers/pypi.lua index f60a8ede..d5368bc8 100644 --- a/lua/mason-core/installer/managers/pypi.lua +++ b/lua/mason-core/installer/managers/pypi.lua @@ -15,6 +15,14 @@ local M = {} local VENV_DIR = "venv" +function M.venv_path(dir) + return path.concat { + dir, + VENV_DIR, + platform.is.win and "Scripts" or "bin", + } +end + ---@async ---@param candidates string[] local function resolve_python3(candidates) diff --git a/lua/mason-core/installer/managers/std.lua b/lua/mason-core/installer/managers/std.lua index 6e1a0d9e..b4eb11ab 100644 --- a/lua/mason-core/installer/managers/std.lua +++ b/lua/mason-core/installer/managers/std.lua @@ -6,7 +6,7 @@ local installer = require "mason-core.installer" local log = require "mason-core.log" local path = require "mason-core.path" local platform = require "mason-core.platform" -local powershell = require "mason-core.managers.powershell" +local powershell = require "mason-core.installer.managers.powershell" local M = {} |
