50 lines
1.2 KiB
Lua
50 lines
1.2 KiB
Lua
-- 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 = "gruvbox_dark"
|
|
-- theme = "nord"
|
|
-- theme = "OceanicNext",
|
|
},
|
|
sections = {lualine_c = {{pr_status}}}
|
|
})
|