use File::Slurp qw/read_file write_file/;
use IO::Prompter [ -style => 'bold', '-stdio', '-verbatim' ];
use JSON::MaybeXS qw/encode_json/;
+use PerlX::Maybe;
use Term::ANSIColor qw/RED RESET/;
use constant LEVEL_VALUES => {
sub usage_desc { '%c [-cp] add id' }
my %TABLE = (
- contest => \&add_contest,
- problem => \&add_problem,
+ contests => \&add_contest,
+ problems => \&add_problem,
);
sub validate_args {
my ($self, $opt, $args) = @_;
my @args = @$args;
$self->usage_error('No table selected') unless $self->app->table;
- $self->usage_error('Don\'t know how to add this object type') unless $TABLE{$self->app->object};
+ $self->usage_error('Don\'t know how to add to this table') unless $TABLE{$self->app->table};
$self->usage_error('Wrong number of arguments') if @args != 1;
}
sub execute {
my ($self, $opt, $args) = @_;
my ($id) = @$args;
- $TABLE{$self->app->object}->($self, $id);
+ $TABLE{$self->app->table}->($self, $id);
}
sub add_contest {
if ($runner eq 'Verifier' || $runner eq 'Interactive') {
say RED, 'WARNING: Runner::Interactive is experimental', RESET if $runner eq 'Interactive';
- $versource = prompt "[Runner::$runner] Verifier file name", -complete => 'filenames';
+ $versource = read_file prompt "[Runner::$runner] Verifier file name", -complete => 'filenames';
$verformat = prompt "[Runner::$runner] Verifier format", -menu => [qw/C CPP MONO JAVA PASCAL PERL PYTHON/];
}
runner => $runner,
judge => $judge,
testcnt => $testcnt,
+ maybe private => $private,
+ maybe timeout => $timeout,
+ maybe olimit => $olimit,
+ maybe gensource => $gensource,
+ maybe genformat => $genformat,
+ maybe versource => $versource,
+ maybe verformat => $verformat,
);
- $options{private} = $private if $private;
- $options{timeout} = $timeout if $timeout;
- $options{olimit} = $olimit if $olimit;
$options{tests} = encode_json \@tests if @tests;
- $options{gensource} = $gensource if $gensource;
- $options{genformat} = $genformat if $genformat;
- $options{versource} = $versource if $versource;
- $options{verformat} = $verformat if $verformat;
db->insert(problems => \%options);
db->insert(contest_problems => {problem => $id, contest => $contest}) if $contest;
}