]>
Commit | Line | Data |
---|---|---|
1 | package Gruntmaster::App::Command::Set; | |
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 | ||
11 | use File::Slurp qw/read_file/; | |
12 | ||
13 | sub opt_spec { | |
14 | ['file!', 'Use the contents of a file as value'], | |
15 | } | |
16 | ||
17 | sub usage_desc { "%c [-cjpu] set id column value [column value ...]\n%c [-cjpu] set --file id column filename [column filename ...]" } | |
18 | ||
19 | sub validate_args { | |
20 | my ($self, $opt, $args) = @_; | |
21 | my @args = @$args; | |
22 | $self->usage_error('No table selected') unless $self->app->table; | |
23 | $self->usage_error('Not enough arguments provided') if @args < 3; | |
24 | $self->usage_error('The number of arguments must be odd') unless @args % 2; | |
25 | } | |
26 | ||
27 | sub execute { | |
28 | my ($self, $opt, $args) = @_; | |
29 | my ($id, %values) = @$args; | |
30 | %values = map { $_ => scalar read_file $values{$_} } keys %values if $opt->{file}; | |
31 | db->update($self->app->table, \%values, {id => $id}); | |
32 | } | |
33 | ||
34 | 1; | |
35 | __END__ |