Bump version and update Changes
[gruntmaster-data.git] / lib / Gruntmaster / App / Command / Add.pm
index 3475238621035fc85900701e1c1857c5a9e4e3e8..8f84dc3dbbeea559815ff92a7f363262fe5966c8 100644 (file)
@@ -3,7 +3,7 @@ package Gruntmaster::App::Command::Add;
 use 5.014000;
 use warnings;
 
-our $VERSION = '5999.000_004';
+our $VERSION = '5999.000_014';
 
 use Gruntmaster::App '-command';
 use Gruntmaster::Data;
@@ -12,6 +12,7 @@ use Date::Parse qw/str2time/;
 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 => {
@@ -47,8 +48,8 @@ sub add_contest {
 
        my $name = prompt 'Contest name';
        my $owner = prompt 'Owner';
-       my $start = str2time prompt 'Start time' or die 'Cannot parse time';
-       my $stop = str2time prompt 'Stop time' or die 'Cannot parse time';
+       my $start = str2time prompt 'Start time' or die "Cannot parse time\n";
+       my $stop = str2time prompt 'Stop time' or die "Cannot parse time\n";
 
        db->insert(contests => {id => $id, name => $name, owner => $owner, start => $start, stop => $stop});
 }
@@ -89,7 +90,7 @@ sub add_problem {
 
        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/];
        }
 
@@ -106,18 +107,54 @@ sub add_problem {
                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;
 }
 
 1;
 __END__
+
+=encoding utf-8
+
+=head1 NAME
+
+Gruntmaster::App::Command::Add - add a problem or contest by answering a series of prompts
+
+=head1 SYNOPSIS
+
+  gm -p add aplusb
+  gm -c add test_contest
+
+=head1 DESCRIPTION
+
+The add command creates a new problem or contest by prompting the user
+for the properties of the new object. It takes a single argument, the
+ID of the new object.
+
+=head1 SEE ALSO
+
+L<gm>
+
+=head1 AUTHOR
+
+Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2014-2015 by Marius Gavrilescu
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself, either Perl version 5.20.1 or,
+at your option, any later version of Perl 5 you may have available.
+
+
+=cut
This page took 0.011706 seconds and 4 git commands to generate.