Add docker-compose to the list of build adapters

This commit is contained in:
Zoe Roux
2022-05-11 15:18:59 +02:00
parent 3107d03dad
commit b89e0ea2b2
3 changed files with 56 additions and 11 deletions
@@ -0,0 +1,42 @@
local Job = require 'plenary.job'
local M = {}
M.patterns = {
"**/docker-compose.yml",
"**/docker-compose.*.yml"
}
M.list = function(dc)
return {
{
name = dc,
file = dc,
icon = "",
},
}
end
M.build = function(proj)
local function add_to_qf(err, data)
vim.fn.setqflist({}, "a", {
lines = { err and err or data },
})
end
return Job:new({
command = "docker-compose",
args = { "-f", proj.file, "build" },
on_stdout = vim.schedule_wrap(add_to_qf),
on_stderr = vim.schedule_wrap(add_to_qf),
})
end
M.run = function(proj)
return "docker-compose -f" .. proj.file .. " up --build"
end
M.require_build = false
return M
@@ -2,7 +2,7 @@ local Job = require 'plenary.job'
local M = {}
M.pattern = "*.sln"
M.patterns = { "*.sln" }
M.list = function()
local ignore = 3
+13 -10
View File
@@ -9,6 +9,7 @@ local M = {
}
table.insert(M.adapters, require "build.adapters.dotnet")
table.insert(M.adapters, require "build.adapters.docker-compose")
M.list_projs = function()
local projs = {}
@@ -16,16 +17,18 @@ M.list_projs = function()
-- TODO: Use async methods here. (currently waiting for plenary async jobs)
for _, adapter in pairs(M.adapters) do
for _, match in pairs(vim.fn.glob(adapter.pattern, false, true)) do
for _, proj in pairs(adapter.list(match)) do
proj.adapter = adapter
proj.source = match
proj.icon = proj.icon or has_icon and nwicon.get_icon(
vim.fn.fnamemodify(proj.file, ':t'),
vim.fn.fnamemodify(proj.file, ':e'),
{ default = true }
) or " "
table.insert(projs, proj)
for _, pattern in pairs(adapter.patterns) do
for _, match in pairs(vim.fn.glob(pattern, false, true)) do
for _, proj in pairs(adapter.list(match)) do
proj.adapter = adapter
proj.source = match
proj.icon = proj.icon or has_icon and nwicon.get_icon(
vim.fn.fnamemodify(proj.file, ':t'),
vim.fn.fnamemodify(proj.file, ':e'),
{ default = true }
) or " "
table.insert(projs, proj)
end
end
end
end