From bfcd4ec465f52343ed3ef248e5f9cfdbd97e592c Mon Sep 17 00:00:00 2001 From: Lctrs Date: Sun, 17 Oct 2021 15:32:33 +0000 Subject: 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. --- lua/nvim-lsp-installer/installers/composer.lua | 68 +++++++++++++++--------- lua/nvim-lsp-installer/servers/init.lua | 1 + lua/nvim-lsp-installer/servers/phpactor/init.lua | 12 ++++- 3 files changed, 55 insertions(+), 26 deletions(-) (limited to 'lua') 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,39 +6,59 @@ 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, - } - - 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 - - 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, + installer, } end +local M = {} + +function M.packages(packages) + return ensure_composer(function(server, callback, context) + local c = process.chain { + cwd = server.root_dir, + stdio_sink = context.stdio_sink, + } + + 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 + + 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) return path.concat { root_dir, "vendor", "bin", platform.is_win and ("%s.bat"):format(executable) or executable } end 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 -- cgit v1.2.3-70-g09d2