From b89e0ea2b2385bb815ee37c82633a478c398dded Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Wed, 11 May 2022 15:18:59 +0200 Subject: [PATCH] Add docker-compose to the list of build adapters --- .../lua/build/adapters/docker-compose.lua | 42 +++++++++++++++++++ .../nvim.ln/lua/build/adapters/dotnet.lua | 2 +- nvim/nvim/config/nvim.ln/lua/build/init.lua | 23 +++++----- 3 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 nvim/nvim/config/nvim.ln/lua/build/adapters/docker-compose.lua diff --git a/nvim/nvim/config/nvim.ln/lua/build/adapters/docker-compose.lua b/nvim/nvim/config/nvim.ln/lua/build/adapters/docker-compose.lua new file mode 100644 index 0000000..c69917d --- /dev/null +++ b/nvim/nvim/config/nvim.ln/lua/build/adapters/docker-compose.lua @@ -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 diff --git a/nvim/nvim/config/nvim.ln/lua/build/adapters/dotnet.lua b/nvim/nvim/config/nvim.ln/lua/build/adapters/dotnet.lua index 97f3870..5a4fa42 100644 --- a/nvim/nvim/config/nvim.ln/lua/build/adapters/dotnet.lua +++ b/nvim/nvim/config/nvim.ln/lua/build/adapters/dotnet.lua @@ -2,7 +2,7 @@ local Job = require 'plenary.job' local M = {} -M.pattern = "*.sln" +M.patterns = { "*.sln" } M.list = function() local ignore = 3 diff --git a/nvim/nvim/config/nvim.ln/lua/build/init.lua b/nvim/nvim/config/nvim.ln/lua/build/init.lua index 8682309..6314aa7 100644 --- a/nvim/nvim/config/nvim.ln/lua/build/init.lua +++ b/nvim/nvim/config/nvim.ln/lua/build/init.lua @@ -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