]>
Commit | Line | Data |
---|---|---|
1 | package Gruntmaster::App::Command::Show; | |
2 | ||
3 | use 5.014000; | |
4 | use warnings; | |
5 | ||
6 | our $VERSION = '5999.000_004'; | |
7 | ||
8 | use Gruntmaster::App '-command'; | |
9 | use Gruntmaster::Data; | |
10 | use POSIX qw/strftime/; | |
11 | ||
12 | sub usage_desc { '%c [-cjpu] show id' } | |
13 | ||
14 | my %TABLE = ( | |
15 | contests => \&show_contest, | |
16 | jobs => \&show_job, | |
17 | problems => \&show_problem, | |
18 | users => \&show_user, | |
19 | ); | |
20 | ||
21 | sub validate_args { | |
22 | my ($self, $opt, $args) = @_; | |
23 | my @args = @$args; | |
24 | $self->usage_error('No table selected') unless $self->app->table; | |
25 | $self->usage_error('Wrong number of arguments') if @args != 1; | |
26 | } | |
27 | ||
28 | sub execute { | |
29 | my ($self, $opt, $args) = @_; | |
30 | my ($obj) = @$args; | |
31 | $TABLE{$self->app->table}->(%{db->select($self->app->table, '*', {id => $obj})->hash}); | |
32 | } | |
33 | ||
34 | sub show_contest { | |
35 | my (%columns) = @_; | |
36 | $columns{$_} = strftime '%c', localtime $columns{$_} for qw/start stop/; | |
37 | ||
38 | print <<END | |
39 | Name: $columns{name} | |
40 | Owner: $columns{owner} | |
41 | Start: $columns{start} | |
42 | Stop: $columns{stop} | |
43 | END | |
44 | } | |
45 | ||
46 | sub show_problem { | |
47 | my (%columns) = @_; | |
48 | ||
49 | no warnings 'uninitialized'; | |
50 | print <<END | |
51 | Name: $columns{name} | |
52 | Author: $columns{author} | |
53 | Statement written by: $columns{writer} | |
54 | Owner: $columns{owner} | |
55 | Level: $columns{level} | |
56 | Value (points): $columns{value} | |
57 | Private: @{[$columns{private} ? 'Yes' : 'No']} | |
58 | ||
59 | Generator: $columns{generator} | |
60 | Runner: $columns{runner} | |
61 | Judge: $columns{judge} | |
62 | Test count: $columns{testcnt} | |
63 | Time limit: $columns{timeout} | |
64 | Output limit (bytes): $columns{olimit} | |
65 | END | |
66 | } | |
67 | ||
68 | 1; | |
69 | __END__ |