Skip to content

Commit

Permalink
refactor ftplugins for easier management
Browse files Browse the repository at this point in the history
  • Loading branch information
Ramilito committed Jul 7, 2024
1 parent 8a256c9 commit a6d372e
Show file tree
Hide file tree
Showing 11 changed files with 588 additions and 480 deletions.
40 changes: 25 additions & 15 deletions ftplugin/k8s_container_logs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,29 @@ local api = vim.api
local container_view = require("kubectl.views.containers")
local pod_view = require("kubectl.views.pods")

api.nvim_buf_set_keymap(0, "n", "R", "", {
noremap = true,
silent = true,
callback = function()
container_view.PodContainers()
end,
})
--- Set key mappings for the buffer
local function set_keymaps()
api.nvim_buf_set_keymap(0, "n", "R", "", {
noremap = true,
silent = true,
callback = function()
container_view.PodContainers()
end,
})

vim.api.nvim_buf_set_keymap(0, "n", "f", "", {
noremap = true,
silent = true,
desc = "Tail logs",
callback = function()
container_view.tailLogs(pod_view.selection.pod, pod_view.selection.ns)
end,
})
vim.api.nvim_buf_set_keymap(0, "n", "f", "", {
noremap = true,
silent = true,
desc = "Tail logs",
callback = function()
container_view.tailLogs(pod_view.selection.pod, pod_view.selection.ns)
end,
})
end

--- Initialize the module
local function init()
set_keymaps()
end

init()
76 changes: 43 additions & 33 deletions ftplugin/k8s_containers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,48 @@ local container_view = require("kubectl.views.containers")
local pod_view = require("kubectl.views.pods")
local tables = require("kubectl.utils.tables")

api.nvim_buf_set_keymap(0, "n", "l", "", {
noremap = true,
silent = true,
callback = function()
local container_name = tables.getCurrentSelection(unpack({ 1 }))
if container_name then
container_view.selectContainer(container_name)
container_view.logs(pod_view.selection.pod, pod_view.selection.ns)
else
print("Failed to extract logs.")
end
end,
})
--- Set key mappings for the buffer
local function set_keymaps()
api.nvim_buf_set_keymap(0, "n", "l", "", {
noremap = true,
silent = true,
callback = function()
local container_name = tables.getCurrentSelection(unpack({ 1 }))
if container_name then
container_view.selectContainer(container_name)
container_view.logs(pod_view.selection.pod, pod_view.selection.ns)
else
print("Failed to extract logs.")
end
end,
})

api.nvim_buf_set_keymap(0, "n", "<CR>", "", {
noremap = true,
silent = true,
callback = function()
local container_name = tables.getCurrentSelection(unpack({ 1 }))
if container_name then
container_view.selectContainer(container_name)
container_view.exec(pod_view.selection.pod, pod_view.selection.ns)
else
print("Failed to extract containers.")
end
end,
})
api.nvim_buf_set_keymap(0, "n", "<CR>", "", {
noremap = true,
silent = true,
callback = function()
local container_name = tables.getCurrentSelection(unpack({ 1 }))
if container_name then
container_view.selectContainer(container_name)
container_view.exec(pod_view.selection.pod, pod_view.selection.ns)
else
print("Failed to extract containers.")
end
end,
})

api.nvim_buf_set_keymap(0, "n", "R", "", {
noremap = true,
silent = true,
callback = function()
container_view.View()
end,
})
api.nvim_buf_set_keymap(0, "n", "R", "", {
noremap = true,
silent = true,
callback = function()
container_view.View()
end,
})
end

--- Initialize the module
local function init()
set_keymaps()
end

init()
215 changes: 114 additions & 101 deletions ftplugin/k8s_deployments.lua
Original file line number Diff line number Diff line change
Expand Up @@ -8,118 +8,131 @@ local root_view = require("kubectl.views.root")
local tables = require("kubectl.utils.tables")
local view = require("kubectl.views")

api.nvim_buf_set_keymap(0, "n", "g?", "", {
noremap = true,
silent = true,
callback = function()
view.Hints({
{ key = "<r>", desc = "Restart selected deployment" },
{ key = "<d>", desc = "Describe selected deployment" },
{ key = "<enter>", desc = "Opens pods view" },
})
end,
})
--- Set key mappings for the buffer
local function set_keymaps()
api.nvim_buf_set_keymap(0, "n", "g?", "", {
noremap = true,
silent = true,
callback = function()
view.Hints({
{ key = "<r>", desc = "Restart selected deployment" },
{ key = "<d>", desc = "Describe selected deployment" },
{ key = "<enter>", desc = "Opens pods view" },
})
end,
})

api.nvim_buf_set_keymap(0, "n", "d", "", {
noremap = true,
silent = true,
desc = "Desc",
callback = function()
local namespace, deployment_name = tables.getCurrentSelection(unpack({ 1, 2 }))
if deployment_name and namespace then
deployment_view.DeploymentDesc(deployment_name, namespace)
else
vim.api.nvim_err_writeln("Failed to describe pod name or namespace.")
end
end,
})
api.nvim_buf_set_keymap(0, "n", "d", "", {
noremap = true,
silent = true,
desc = "Desc",
callback = function()
local namespace, deployment_name = tables.getCurrentSelection(unpack({ 1, 2 }))
if deployment_name and namespace then
deployment_view.DeploymentDesc(deployment_name, namespace)
else
vim.api.nvim_err_writeln("Failed to describe pod name or namespace.")
end
end,
})

api.nvim_buf_set_keymap(0, "n", "<CR>", "", {
noremap = true,
silent = true,
desc = "kgp",
callback = function()
pod_view.View()
end,
})
api.nvim_buf_set_keymap(0, "n", "<CR>", "", {
noremap = true,
silent = true,
desc = "kgp",
callback = function()
pod_view.View()
end,
})

api.nvim_buf_set_keymap(0, "n", "<bs>", "", {
noremap = true,
silent = true,
desc = "Back",
callback = function()
root_view.View()
end,
})
api.nvim_buf_set_keymap(0, "n", "<bs>", "", {
noremap = true,
silent = true,
desc = "Back",
callback = function()
root_view.View()
end,
})

-- Only works _if_ their is only _one_ container and that image is the _same_ as the deployment
api.nvim_buf_set_keymap(0, "n", "i", "", {
noremap = true,
silent = true,
callback = function()
local ns, name = tables.getCurrentSelection(unpack({ 1, 2 }))
-- Only works _if_ their is only _one_ container and that image is the _same_ as the deployment
api.nvim_buf_set_keymap(0, "n", "i", "", {
noremap = true,
silent = true,
callback = function()
local ns, name = tables.getCurrentSelection(unpack({ 1, 2 }))

local get_images = "get deploy "
.. name
.. " -n "
.. ns
.. ' -o jsonpath="{.spec.template.spec.containers[*].image}"'
local get_images = "get deploy "
.. name
.. " -n "
.. ns
.. ' -o jsonpath="{.spec.template.spec.containers[*].image}"'

local container_images = {}
local container_images = {}

for image in commands.execute_shell_command("kubectl", get_images):gmatch("[^\r\n]+") do
table.insert(container_images, image)
end
for image in commands.execute_shell_command("kubectl", get_images):gmatch("[^\r\n]+") do
table.insert(container_images, image)
end

if #container_images > 1 then
vim.notify("Setting new container image for multiple containers are NOT supported yet", vim.log.levels.WARN)
else
vim.ui.input({ prompt = "Update image", default = container_images[1] }, function(input)
if input ~= nil then
buffers.confirmation_buffer("Are you sure that you want to update the image?", nil, function(confirm)
if confirm then
local set_image = { "set", "image", "deployment/" .. name, name .. "=" .. input, "-n", ns }
commands.shell_command_async("kubectl", set_image, function(response)
vim.schedule(function()
vim.notify(response)
if #container_images > 1 then
vim.notify("Setting new container image for multiple containers are NOT supported yet", vim.log.levels.WARN)
else
vim.ui.input({ prompt = "Update image", default = container_images[1] }, function(input)
if input ~= nil then
buffers.confirmation_buffer("Are you sure that you want to update the image?", nil, function(confirm)
if confirm then
local set_image = { "set", "image", "deployment/" .. name, name .. "=" .. input, "-n", ns }
commands.shell_command_async("kubectl", set_image, function(response)
vim.schedule(function()
vim.notify(response)
end)
end)
end)
end
end)
end
end)
end
end,
})

api.nvim_buf_set_keymap(0, "n", "r", "", {
noremap = true,
silent = true,
callback = function()
local ns, name = tables.getCurrentSelection(unpack({ 1, 2 }))
buffers.confirmation_buffer("Are you sure that you want to restart the deployment: " .. name, nil, function(confirm)
if confirm then
commands.shell_command_async(
"kubectl",
{ "rollout", "restart", "deployment/" .. name, "-n", ns },
function(response)
vim.schedule(function()
vim.notify(response)
end
end)
end
)
end)
end
end)
end,
})
api.nvim_buf_set_keymap(0, "n", "R", "", {
noremap = true,
silent = true,
callback = function()
deployment_view.View()
end,
})
end,
})

api.nvim_buf_set_keymap(0, "n", "r", "", {
noremap = true,
silent = true,
callback = function()
local ns, name = tables.getCurrentSelection(unpack({ 1, 2 }))
buffers.confirmation_buffer(
"Are you sure that you want to restart the deployment: " .. name,
nil,
function(confirm)
if confirm then
commands.shell_command_async(
"kubectl",
{ "rollout", "restart", "deployment/" .. name, "-n", ns },
function(response)
vim.schedule(function()
vim.notify(response)
end)
end
)
end
end
)
end,
})
api.nvim_buf_set_keymap(0, "n", "R", "", {
noremap = true,
silent = true,
callback = function()
deployment_view.View()
end,
})
end

if not loop.is_running() then
loop.start_loop(deployment_view.View)
--- Initialize the module
local function init()
set_keymaps()
if not loop.is_running() then
loop.start_loop(deployment_view.View)
end
end

init()
Loading

0 comments on commit a6d372e

Please sign in to comment.