use crate::utils::build;
use crate::utils::dirs::template_dir;
use std::path::Path;
pub fn build(problem_dir: &Path, contests: Vec<String>) {
for contest in contests {
let contest_result =
mapm::contest::fetch_contest(Path::new(&contest), problem_dir, &template_dir());
if let Ok(contest) = &contest_result {
build::exec_script(&contest.template.name)
};
build::contest(&contest_result);
}
}
pub fn preview(
problem_dir: &Path,
problem_names: Vec<String>,
hide: Option<Vec<String>>,
show: Option<Vec<String>>,
) {
let views = crate::utils::views::parse_views(hide, show);
let problems =
crate::utils::views::problem_names_to_problems(problem_dir, &problem_names, views);
for problem in problems {
build::preview(&problem);
}
}
pub fn preview_all(
problem_dir: &Path,
filters: Vec<String>,
hide: Option<Vec<String>>,
show: Option<Vec<String>>,
) {
let views = crate::utils::views::parse_views(hide, show);
let filters = crate::utils::filter::parse_filters(&filters);
let problem_names = crate::utils::filter::filtered_names(&filters, problem_dir);
let filtered_problems =
crate::utils::views::problem_names_to_problems(problem_dir, &problem_names, views);
build::preview_all(&filtered_problems);
}