/
new.pm
62 lines (50 loc) · 1.33 KB
/
new.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package DU::App::Command::drink::new;
use 5.16.1;
use Moo;
extends 'DU::App::Command';
use DU::Util qw(edit_data drink_as_data single_item drink_as_markdown);
sub abstract { 'create new drink' }
sub usage_desc { 'du drink new $drink' }
sub opt_spec {
[ 'based_on|b=s', 'the drink to base the new drink on' ],
}
sub execute {
my ($self, $opt, $args) = @_;
my $create;
if (my $b = $opt->based_on) {
single_item(sub {
$create = drink_as_data($_[0]);
$create->{variant_of_drink} = $_[0]->name;
}, 'drink', $b, $self->rs('Drink'))
} else {
$create = {
description => 'Refreshing beverage for a hot day',
name => 'Tom Collins',
source => '500 Cocktails, p27',
ingredients => [{
name => 'Club Soda',
unit => 'ounce',
amount => 4,
}, {
name => 'Gin',
unit => 'ounce',
amount => 2,
}, {
name => 'Lemon Juice',
unit => 'ounce',
amount => 1,
}, {
name => 'Simple Syrup',
unit => 'tablespoon',
amount => 1,
}],
}
}
my $i = $self->schema->create_drink(
edit_data($create)
);
$i->discard_changes;
print drink_as_markdown($i);
say 'drink (' . $i->name . ') created';
}
1;