]>
Commit | Line | Data |
---|---|---|
1 | package Gruntmaster::App::Command::Show; | |
2 | ||
3 | use 5.014000; | |
4 | use warnings; | |
5 | ||
6 | our $VERSION = '5999.000_015'; | |
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_job { | |
47 | my (%columns) = @_; | |
48 | $columns{date} = strftime '%c', localtime $columns{date}; | |
49 | ||
50 | no warnings 'uninitialized'; | |
51 | print <<"END" | |
52 | Problem: $columns{problem} | |
53 | Contest: $columns{contest} | |
54 | Owner: $columns{owner} | |
55 | Date: $columns{date} | |
56 | Private: @{[$columns{private} ? 'Yes' : 'No']} | |
57 | Format: $columns{format} | |
58 | Result: $columns{result} ($columns{result_text}) | |
59 | END | |
60 | } | |
61 | ||
62 | sub show_problem { | |
63 | my (%columns) = @_; | |
64 | ||
65 | no warnings 'uninitialized'; | |
66 | print <<"END" | |
67 | Name: $columns{name} | |
68 | Author: $columns{author} | |
69 | Statement written by: $columns{writer} | |
70 | Owner: $columns{owner} | |
71 | Level: $columns{level} | |
72 | Value (points): $columns{value} | |
73 | Private: @{[$columns{private} ? 'Yes' : 'No']} | |
74 | ||
75 | Generator: $columns{generator} | |
76 | Runner: $columns{runner} | |
77 | Judge: $columns{judge} | |
78 | Test count: $columns{testcnt} | |
79 | Time limit: $columns{timeout} | |
80 | Output limit (bytes): $columns{olimit} | |
81 | END | |
82 | } | |
83 | ||
84 | sub show_user { | |
85 | my (%columns) = @_; | |
86 | $columns{since} = strftime '%c', localtime $columns{since}; | |
87 | ||
88 | no warnings 'uninitialized'; | |
89 | print <<"END" | |
90 | Email: $columns{name} <$columns{email}> | |
91 | Phone: $columns{phone} | |
92 | Since: $columns{since} | |
93 | Admin: @{[$columns{admin} ? 'Yes' : 'No']} | |
94 | Level: $columns{level} | |
95 | University: $columns{university} | |
96 | Town: $columns{town} | |
97 | Country: $columns{country} | |
98 | END | |
99 | } | |
100 | ||
101 | 1; | |
102 | __END__ | |
103 | ||
104 | =encoding utf-8 | |
105 | ||
106 | =head1 NAME | |
107 | ||
108 | Gruntmaster::App::Command::Show - display human-readable information about an object | |
109 | ||
110 | =head1 SYNOPSIS | |
111 | ||
112 | gm -u show MGV | |
113 | gm -p show aplusb | |
114 | gm -c show test_ct | |
115 | gm -j show 100 | |
116 | ||
117 | =head1 DESCRIPTION | |
118 | ||
119 | The get command takes an object ID and prints information about that | |
120 | object in a human-readable format. | |
121 | ||
122 | =head1 SEE ALSO | |
123 | ||
124 | L<gm> | |
125 | ||
126 | =head1 AUTHOR | |
127 | ||
128 | Marius Gavrilescu, E<lt>marius@ieval.roE<gt> | |
129 | ||
130 | =head1 COPYRIGHT AND LICENSE | |
131 | ||
132 | Copyright (C) 2014-2015 by Marius Gavrilescu | |
133 | ||
134 | This library is free software; you can redistribute it and/or modify | |
135 | it under the same terms as Perl itself, either Perl version 5.20.1 or, | |
136 | at your option, any later version of Perl 5 you may have available. | |
137 | ||
138 | ||
139 | =cut |