fix(health): simplify health check
This commit is contained in:
parent
02019dbdef
commit
dc4326524c
7 changed files with 14 additions and 53 deletions
|
|
@ -34,20 +34,6 @@ local function check_python_env()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function check_scrapers()
|
|
||||||
local plugin_path = utils.get_plugin_path()
|
|
||||||
|
|
||||||
local scrapers = { 'atcoder.py', 'codeforces.py', 'cses.py' }
|
|
||||||
for _, scraper in ipairs(scrapers) do
|
|
||||||
local scraper_path = plugin_path .. '/scrapers/' .. scraper
|
|
||||||
if vim.fn.filereadable(scraper_path) == 1 then
|
|
||||||
vim.health.ok('Scraper found: ' .. scraper)
|
|
||||||
else
|
|
||||||
vim.health.error('Missing scraper: ' .. scraper)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function check_luasnip()
|
local function check_luasnip()
|
||||||
local has_luasnip, luasnip = pcall(require, 'luasnip')
|
local has_luasnip, luasnip = pcall(require, 'luasnip')
|
||||||
if has_luasnip then
|
if has_luasnip then
|
||||||
|
|
@ -59,25 +45,6 @@ local function check_luasnip()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function check_config()
|
|
||||||
vim.health.ok('Plugin ready')
|
|
||||||
|
|
||||||
local cp = require('cp')
|
|
||||||
local context = cp.get_current_context()
|
|
||||||
if context.platform then
|
|
||||||
local info = context.platform
|
|
||||||
if context.contest_id then
|
|
||||||
info = info .. ' ' .. context.contest_id
|
|
||||||
if context.problem_id then
|
|
||||||
info = info .. ' ' .. context.problem_id
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vim.health.info('Current context: ' .. info)
|
|
||||||
else
|
|
||||||
vim.health.info('No contest context set')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.check()
|
function M.check()
|
||||||
local version = require('cp.version')
|
local version = require('cp.version')
|
||||||
vim.health.start('cp.nvim health check')
|
vim.health.start('cp.nvim health check')
|
||||||
|
|
@ -87,9 +54,7 @@ function M.check()
|
||||||
check_nvim_version()
|
check_nvim_version()
|
||||||
check_uv()
|
check_uv()
|
||||||
check_python_env()
|
check_python_env()
|
||||||
check_scrapers()
|
|
||||||
check_luasnip()
|
check_luasnip()
|
||||||
check_config()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
|
|
@ -31,14 +31,6 @@ function M.setup(opts)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.get_current_context()
|
|
||||||
return {
|
|
||||||
platform = state.get_platform(),
|
|
||||||
contest_id = state.get_contest_id(),
|
|
||||||
problem_id = state.get_problem_id(),
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.is_initialized()
|
function M.is_initialized()
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,8 @@ end
|
||||||
|
|
||||||
function M.setup_contest(platform, contest_id, problem_id, language)
|
function M.setup_contest(platform, contest_id, problem_id, language)
|
||||||
if not state.get_platform() then
|
if not state.get_platform() then
|
||||||
logger.log('no platform set', vim.log.levels.ERROR)
|
logger.log('No platform configured. Use :CP <platform> <contest> [...] first.')
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -215,7 +216,10 @@ function M.navigate_problem(direction, language)
|
||||||
local current_problem_id = state.get_problem_id()
|
local current_problem_id = state.get_problem_id()
|
||||||
|
|
||||||
if not platform or not contest_id or not current_problem_id then
|
if not platform or not contest_id or not current_problem_id then
|
||||||
logger.log('no contest context', vim.log.levels.ERROR)
|
logger.log(
|
||||||
|
'No platform configured. Use :CP <platform> <contest> [...] first.',
|
||||||
|
vim.log.levels.ERROR
|
||||||
|
)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ function M.toggle_interactive()
|
||||||
|
|
||||||
if not platform then
|
if not platform then
|
||||||
logger.log(
|
logger.log(
|
||||||
'No platform %s configured. Use :CP <platform> <contest> [...] first.',
|
'No platform configured. Use :CP <platform> <contest> [...] first.',
|
||||||
vim.log.levels.ERROR
|
vim.log.levels.ERROR
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
@ -131,7 +131,7 @@ function M.toggle_run_panel(is_debug)
|
||||||
|
|
||||||
if not platform then
|
if not platform then
|
||||||
logger.log(
|
logger.log(
|
||||||
'No platform %s configured. Use :CP <platform> <contest> [...] first.',
|
'No platform configured. Use :CP <platform> <contest> [...] first.',
|
||||||
vim.log.levels.ERROR
|
vim.log.levels.ERROR
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,13 @@ end, {
|
||||||
|
|
||||||
if num_args == 2 then
|
if num_args == 2 then
|
||||||
local candidates = {}
|
local candidates = {}
|
||||||
local cp = require('cp')
|
local state = require('cp.state')
|
||||||
local context = cp.get_current_context()
|
local platform, contest_id = state.get_platform(), state.get_contest_id()
|
||||||
if context.platform and context.contest_id then
|
if platform and contest_id then
|
||||||
vim.list_extend(candidates, actions)
|
vim.list_extend(candidates, actions)
|
||||||
local cache = require('cp.cache')
|
local cache = require('cp.cache')
|
||||||
cache.load()
|
cache.load()
|
||||||
local contest_data = cache.get_contest_data(context.platform, context.contest_id)
|
local contest_data = cache.get_contest_data(platform, contest_id)
|
||||||
if contest_data and contest_data.problems then
|
if contest_data and contest_data.problems then
|
||||||
for _, problem in ipairs(contest_data.problems) do
|
for _, problem in ipairs(contest_data.problems) do
|
||||||
table.insert(candidates, problem.id)
|
table.insert(candidates, problem.id)
|
||||||
|
|
|
||||||
|
|
@ -559,7 +559,7 @@ describe('cp command parsing', function()
|
||||||
package.loaded['cp.cache'] = nil
|
package.loaded['cp.cache'] = nil
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('completes platforms and global actions when no contest context', function()
|
it('completes platforms and global actions without contest configuration', function()
|
||||||
local result = complete_fn('', 'CP ', 3)
|
local result = complete_fn('', 'CP ', 3)
|
||||||
|
|
||||||
assert.is_table(result)
|
assert.is_table(result)
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,7 @@ describe('Error boundary handling', function()
|
||||||
has_validation_error = true
|
has_validation_error = true
|
||||||
elseif
|
elseif
|
||||||
log_entry.msg
|
log_entry.msg
|
||||||
and (log_entry.msg:match('no contest set') or log_entry.msg:match('No contest configured'))
|
and (log_entry.msg:match('No platform ') or log_entry.msg:match('No contest '))
|
||||||
then
|
then
|
||||||
has_appropriate_errors = has_appropriate_errors + 1
|
has_appropriate_errors = has_appropriate_errors + 1
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue