fix: ci
This commit is contained in:
parent
d0d5ec9bfd
commit
e0c3cd4596
4 changed files with 21 additions and 18 deletions
|
|
@ -87,11 +87,11 @@ function M.setup(user_config)
|
||||||
return config
|
return config
|
||||||
end
|
end
|
||||||
|
|
||||||
local function default_filename(contest, problem_id, problem_letter)
|
local function default_filename(contest, contest_id, problem_id)
|
||||||
local full_problem_id = problem_id:lower()
|
local full_problem_id = contest_id:lower()
|
||||||
if contest == "atcoder" or contest == "codeforces" then
|
if contest == "atcoder" or contest == "codeforces" then
|
||||||
if problem_letter then
|
if problem_id then
|
||||||
full_problem_id = full_problem_id .. problem_letter:lower()
|
full_problem_id = full_problem_id .. problem_id:lower()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return full_problem_id .. ".cc"
|
return full_problem_id .. ".cc"
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ local function setup_contest(contest_type)
|
||||||
logger.log(("set up %s contest environment"):format(contest_type))
|
logger.log(("set up %s contest environment"):format(contest_type))
|
||||||
end
|
end
|
||||||
|
|
||||||
local function setup_problem(problem_id, problem_letter)
|
local function setup_problem(contest_id, problem_id)
|
||||||
if not vim.g.cp_contest then
|
if not vim.g.cp_contest then
|
||||||
logger.log("no contest mode set. run :CP <contest> first", vim.log.levels.ERROR)
|
logger.log("no contest mode set. run :CP <contest> first", vim.log.levels.ERROR)
|
||||||
return
|
return
|
||||||
|
|
@ -52,7 +52,10 @@ local function setup_problem(problem_id, problem_letter)
|
||||||
|
|
||||||
vim.cmd("silent only")
|
vim.cmd("silent only")
|
||||||
|
|
||||||
local ctx = problem.create_context(vim.g.cp_contest, problem_id, problem_letter, config)
|
vim.g.cp_contest_id = contest_id
|
||||||
|
vim.g.cp_problem_id = problem_id
|
||||||
|
|
||||||
|
local ctx = problem.create_context(vim.g.cp_contest, contest_id, problem_id, config)
|
||||||
|
|
||||||
local scrape_result = scrape.scrape_problem(ctx)
|
local scrape_result = scrape.scrape_problem(ctx)
|
||||||
|
|
||||||
|
|
@ -128,7 +131,7 @@ local function run_problem()
|
||||||
local contest_config = config.contests[vim.g.cp_contest]
|
local contest_config = config.contests[vim.g.cp_contest]
|
||||||
|
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
local ctx = problem.create_context(vim.g.cp_contest, problem_id, nil, config)
|
local ctx = problem.create_context(vim.g.cp_contest, vim.g.cp_contest_id, vim.g.cp_problem_id, config)
|
||||||
execute.run_problem(ctx, contest_config, false)
|
execute.run_problem(ctx, contest_config, false)
|
||||||
vim.cmd.checktime()
|
vim.cmd.checktime()
|
||||||
end)
|
end)
|
||||||
|
|
@ -152,7 +155,7 @@ local function debug_problem()
|
||||||
local contest_config = config.contests[vim.g.cp_contest]
|
local contest_config = config.contests[vim.g.cp_contest]
|
||||||
|
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
local ctx = problem.create_context(vim.g.cp_contest, problem_id, nil, config)
|
local ctx = problem.create_context(vim.g.cp_contest, vim.g.cp_contest_id, vim.g.cp_problem_id, config)
|
||||||
execute.run_problem(ctx, contest_config, true)
|
execute.run_problem(ctx, contest_config, true)
|
||||||
vim.cmd.checktime()
|
vim.cmd.checktime()
|
||||||
end)
|
end)
|
||||||
|
|
@ -171,7 +174,7 @@ local function diff_problem()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local ctx = problem.create_context(vim.g.cp_contest, problem_id, nil, config)
|
local ctx = problem.create_context(vim.g.cp_contest, vim.g.cp_contest_id, vim.g.cp_problem_id, config)
|
||||||
|
|
||||||
if vim.fn.filereadable(ctx.expected_file) == 0 then
|
if vim.fn.filereadable(ctx.expected_file) == 0 then
|
||||||
logger.log(("No expected output file found: %s"):format(ctx.expected_file), vim.log.levels.ERROR)
|
logger.log(("No expected output file found: %s"):format(ctx.expected_file), vim.log.levels.ERROR)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
---@class ProblemContext
|
---@class ProblemContext
|
||||||
---@field contest string Contest name (e.g. "atcoder", "codeforces")
|
---@field contest string Contest name (e.g. "atcoder", "codeforces")
|
||||||
---@field problem_id string Raw problem ID (e.g. "abc123", "1933")
|
---@field contest_id string Contest ID (e.g. "abc123", "1933")
|
||||||
---@field problem_letter? string Problem letter for AtCoder/Codeforces (e.g. "a", "b")
|
---@field problem_id? string Problem ID for AtCoder/Codeforces (e.g. "a", "b")
|
||||||
---@field source_file string Source filename (e.g. "abc123a.cpp")
|
---@field source_file string Source filename (e.g. "abc123a.cpp")
|
||||||
---@field binary_file string Binary output path (e.g. "build/abc123a")
|
---@field binary_file string Binary output path (e.g. "build/abc123a")
|
||||||
---@field input_file string Input test file path (e.g. "io/abc123a.in")
|
---@field input_file string Input test file path (e.g. "io/abc123a.in")
|
||||||
|
|
@ -12,19 +12,19 @@
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
---@param contest string
|
---@param contest string
|
||||||
---@param problem_id string
|
---@param contest_id string
|
||||||
---@param problem_letter? string
|
---@param problem_id? string
|
||||||
---@param config cp.Config
|
---@param config cp.Config
|
||||||
---@return ProblemContext
|
---@return ProblemContext
|
||||||
function M.create_context(contest, problem_id, problem_letter, config)
|
function M.create_context(contest, contest_id, problem_id, config)
|
||||||
local filename_fn = config.filename or require("cp.config").default_filename
|
local filename_fn = config.filename or require("cp.config").default_filename
|
||||||
local source_file = filename_fn(contest, problem_id, problem_letter)
|
local source_file = filename_fn(contest, contest_id, problem_id)
|
||||||
local base_name = vim.fn.fnamemodify(source_file, ":t:r")
|
local base_name = vim.fn.fnamemodify(source_file, ":t:r")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
contest = contest,
|
contest = contest,
|
||||||
|
contest_id = contest_id,
|
||||||
problem_id = problem_id,
|
problem_id = problem_id,
|
||||||
problem_letter = problem_letter,
|
|
||||||
source_file = source_file,
|
source_file = source_file,
|
||||||
binary_file = ("build/%s"):format(base_name),
|
binary_file = ("build/%s"):format(base_name),
|
||||||
input_file = ("io/%s.in"):format(base_name),
|
input_file = ("io/%s.in"):format(base_name),
|
||||||
|
|
|
||||||
|
|
@ -59,9 +59,9 @@ function M.scrape_problem(ctx)
|
||||||
|
|
||||||
local args
|
local args
|
||||||
if ctx.contest == "cses" then
|
if ctx.contest == "cses" then
|
||||||
args = { "uv", "run", scraper_path, ctx.problem_id }
|
args = { "uv", "run", scraper_path, ctx.contest_id }
|
||||||
else
|
else
|
||||||
args = { "uv", "run", scraper_path, ctx.problem_id, ctx.problem_letter }
|
args = { "uv", "run", scraper_path, ctx.contest_id, ctx.problem_id }
|
||||||
end
|
end
|
||||||
|
|
||||||
local result = vim.system(args, {
|
local result = vim.system(args, {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue