59 lines
1.1 KiB
Lua
Executable File
59 lines
1.1 KiB
Lua
Executable File
-- Cached variable
|
|
local cached_pr_status = ""
|
|
|
|
-- Read process output
|
|
local function read_output(err, data)
|
|
if err then
|
|
return
|
|
end
|
|
if not data then
|
|
return
|
|
end
|
|
cached_pr_status = data
|
|
end
|
|
|
|
-- Spawn process
|
|
local function execute_command()
|
|
local stdout = vim.loop.new_pipe(false)
|
|
|
|
local spawn_opts = {
|
|
detached = true,
|
|
stdio = { nil, stdout, nil },
|
|
args = { "-c", "gh pr checks | awk -F'\t' '{ print $2 }'" },
|
|
}
|
|
|
|
vim.loop.spawn("bash", spawn_opts, function()
|
|
stdout:read_start(read_output)
|
|
end)
|
|
end
|
|
|
|
-- Spawn & schedule process
|
|
execute_command()
|
|
vim.fn.timer_start(300000, execute_command)
|
|
|
|
-- Return status from cache
|
|
function pr_status()
|
|
--
|
|
--
|
|
--
|
|
-- PENDING COLOR - #d29922
|
|
-- PASS COLOR - #3fb950
|
|
-- FAIL COLOR - #f85149
|
|
return cached_pr_status
|
|
:gsub("\n", "")
|
|
:gsub("fail", " ")
|
|
:gsub("pass", " ")
|
|
:gsub("pending", " ")
|
|
:gsub("skipping", " ")
|
|
:sub(1, -2)
|
|
end
|
|
|
|
require("lualine").setup({
|
|
options = {
|
|
theme = "catppuccin",
|
|
-- theme = "nord"
|
|
-- theme = "OceanicNext",
|
|
},
|
|
sections = { lualine_c = { { pr_status } } },
|
|
})
|