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 | |
| 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')
| -rw-r--r-- | lua/nvim-lsp-installer/installers/composer.lua | 64 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/init.lua | 1 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/servers/phpactor/init.lua | 12 |
3 files changed, 53 insertions, 24 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) diff --git a/lua/nvim-lsp-installer/servers/init.lua b/lua/nvim-lsp-installer/servers/init.lua index cdef8780..3a72dc6e 100644 --- a/lua/nvim-lsp-installer/servers/init.lua +++ b/lua/nvim-lsp-installer/servers/init.lua @@ -28,6 +28,7 @@ local INSTALL_DIRS = { ["intelephense"] = "php", ["jsonls"] = vscode_langservers_extracted "jsonls", ["kotlin_language_server"] = "kotlin", + ["phpactor"] = "phpactor-source", ["purescriptls"] = "purescript", ["pyright"] = "python", ["rust_analyzer"] = "rust", diff --git a/lua/nvim-lsp-installer/servers/phpactor/init.lua b/lua/nvim-lsp-installer/servers/phpactor/init.lua index 16823520..164436e4 100644 --- a/lua/nvim-lsp-installer/servers/phpactor/init.lua +++ b/lua/nvim-lsp-installer/servers/phpactor/init.lua @@ -1,14 +1,22 @@ +local installers = require "nvim-lsp-installer.installers" +local path = require "nvim-lsp-installer.path" local server = require "nvim-lsp-installer.server" local composer = require "nvim-lsp-installer.installers.composer" +local std = require "nvim-lsp-installer.installers.std" return function(name, root_dir) return server.Server:new { name = name, root_dir = root_dir, homepage = "https://phpactor.readthedocs.io/en/master/", - installer = composer.packages { "phpactor/phpactor" }, + installer = installers.when { + unix = { + std.git_clone "https://github.com/phpactor/phpactor.git", + composer.install(), + }, + }, default_options = { - cmd = { composer.executable(root_dir, "phpactor"), "language-server" }, + cmd = { path.concat { root_dir, "bin", "phpactor" }, "language-server" }, }, } end |
