-- 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}}}
})