aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLctrs <Lctrs@users.noreply.github.com>2021-10-17 15:32:33 +0000
committerGitHub <noreply@github.com>2021-10-17 17:32:33 +0200
commitbfcd4ec465f52343ed3ef248e5f9cfdbd97e592c (patch)
tree88620ba772c1497cde724a4fcdc6707f6479015d
parentui: render header differently if help is showing (diff)
downloadmason-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.
-rw-r--r--lua/nvim-lsp-installer/installers/composer.lua64
-rw-r--r--lua/nvim-lsp-installer/servers/init.lua1
-rw-r--r--lua/nvim-lsp-installer/servers/phpactor/init.lua12
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