fix async

This commit is contained in:
Barrett Ruth 2025-09-24 00:41:10 -04:00
parent 540364926d
commit 7ac91a3c4d
8 changed files with 155 additions and 21 deletions

View file

@ -59,6 +59,8 @@ local function get_contests_for_platform(platform)
'contests',
}
logger.progress(('running: %s'):format(table.concat(cmd, ' ')))
local result = vim
.system(cmd, {
cwd = plugin_path,
@ -67,6 +69,11 @@ local function get_contests_for_platform(platform)
})
:wait()
logger.progress(('exit code: %d, stdout length: %d'):format(result.code, #(result.stdout or '')))
if result.stderr and #result.stderr > 0 then
logger.progress(('stderr: %s'):format(result.stderr:sub(1, 200)))
end
if result.code ~= 0 then
logger.log(
('Failed to load contests: %s'):format(result.stderr or 'unknown error'),
@ -75,9 +82,18 @@ local function get_contests_for_platform(platform)
return {}
end
logger.progress(('stdout preview: %s'):format(result.stdout:sub(1, 100)))
local ok, data = pcall(vim.json.decode, result.stdout)
if not ok or not data.success then
logger.log('Failed to parse contest data', vim.log.levels.ERROR)
if not ok then
logger.log(('JSON parse error: %s'):format(tostring(data)), vim.log.levels.ERROR)
return {}
end
if not data.success then
logger.log(
('Scraper returned success=false: %s'):format(data.error or 'no error message'),
vim.log.levels.ERROR
)
return {}
end
@ -151,10 +167,14 @@ local function get_problems_for_contest(platform, contest_id)
end
local ok, data = pcall(vim.json.decode, result.stdout)
if not ok or not data.success then
if not ok then
logger.log('Failed to parse contest data', vim.log.levels.ERROR)
return problems
end
if not data.success then
logger.log(data.error or 'Contest scraping failed', vim.log.levels.ERROR)
return problems
end
if not data.problems or #data.problems == 0 then
logger.log('Contest has no problems available', vim.log.levels.WARN)