diff options
| author | Lctrs <Lctrs@users.noreply.github.com> | 2021-10-17 15:32:33 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-17 17:32:33 +0200 |
| commit | bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c (patch) | |
| tree | 88620ba772c1497cde724a4fcdc6707f6479015d /lua/nvim-lsp-installer/installers/composer.lua | |
| parent | ui: render header differently if help is showing (diff) | |
| download | mason-bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c.tar mason-bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c.tar.gz mason-bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c.tar.bz2 mason-bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c.tar.lz mason-bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c.tar.xz mason-bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c.tar.zst mason-bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c.zip | |
fix(phpactor): install via git clone instead of composer require (breaking change) (#162)
Users who have already installed phpactor will need to reinstall it once more after this change.
Diffstat (limited to 'lua/nvim-lsp-installer/installers/composer.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/installers/composer.lua | 64 |
1 files changed, 42 insertions, 22 deletions
diff --git a/lua/nvim-lsp-installer/installers/composer.lua b/lua/nvim-lsp-installer/installers/composer.lua index 60a535b2..d206cc46 100644 --- a/lua/nvim-lsp-installer/installers/composer.lua +++ b/lua/nvim-lsp-installer/installers/composer.lua @@ -6,37 +6,57 @@ local std = require "nvim-lsp-installer.installers.std" local platform = require "nvim-lsp-installer.platform" local process = require "nvim-lsp-installer.process" -local M = {} - -function M.packages(packages) - local composer = platform.is_win and "composer.bat" or "composer" +local composer = platform.is_win and "composer.bat" or "composer" +local function ensure_composer(installer) return installers.pipe { std.ensure_executables { { "php", "php was not found in path. Refer to https://www.php.net/." }, { composer, "composer was not found in path. Refer to https://getcomposer.org/download/." }, }, - function(server, callback, context) - local c = process.chain { - cwd = server.root_dir, - stdio_sink = context.stdio_sink, - } + installer, + } +end + +local M = {} - if not (fs.file_exists(path.concat { server.root_dir, "composer.json" })) then - c.run(composer, { "init", "--no-interaction", "--stability=dev" }) - c.run(composer, { "config", "prefer-stable", "true" }) - end +function M.packages(packages) + return ensure_composer(function(server, callback, context) + local c = process.chain { + cwd = server.root_dir, + stdio_sink = context.stdio_sink, + } - local pkgs = Data.list_copy(packages or {}) - if context.requested_server_version then - -- The "head" package is the recipient for the requested version. It's.. by design... don't ask. - pkgs[1] = ("%s:%s"):format(pkgs[1], context.requested_server_version) - end + if not (fs.file_exists(path.concat { server.root_dir, "composer.json" })) then + c.run(composer, { "init", "--no-interaction", "--stability=dev" }) + c.run(composer, { "config", "prefer-stable", "true" }) + end - c.run(composer, vim.list_extend({ "require" }, pkgs)) - c.spawn(callback) - end, - } + local pkgs = Data.list_copy(packages or {}) + if context.requested_server_version then + -- The "head" package is the recipient for the requested version. It's.. by design... don't ask. + pkgs[1] = ("%s:%s"):format(pkgs[1], context.requested_server_version) + end + + c.run(composer, vim.list_extend({ "require" }, pkgs)) + c.spawn(callback) + end) +end + +function M.install() + return ensure_composer(function(server, callback, context) + process.spawn(composer, { + args = { + "install", + "--no-interaction", + "--no-dev", + "--optimize-autoloader", + "--classmap-authoritative", + }, + cwd = server.root_dir, + stdio_sink = context.stdio_sink, + }, callback) + end) end function M.executable(root_dir, executable) |
