| blib/lib/Mojolicious/Command/Author/generate/plugin.pm | |||
|---|---|---|---|
| Criterion | Covered | Total | % |
| statement | 15 | 15 | 100.0 |
| branch | 4 | 4 | 100.0 |
| condition | 2 | 2 | 100.0 |
| subroutine | 3 | 3 | 100.0 |
| pod | 1 | 1 | 100.0 |
| total | 25 | 25 | 100.0 |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package Mojolicious::Command::Author::generate::plugin; | ||||||
| 2 | 1 | 1 | 7 | use Mojo::Base 'Mojolicious::Command'; | |||
| 1 | 2 | ||||||
| 1 | 9 | ||||||
| 3 | |||||||
| 4 | 1 | 1 | 6 | use Mojo::Util qw(camelize class_to_path getopt); | |||
| 1 | 4 | ||||||
| 1 | 406 | ||||||
| 5 | |||||||
| 6 | has description => 'Generate Mojolicious plugin directory structure'; | ||||||
| 7 | has usage => sub { shift->extract_usage }; | ||||||
| 8 | |||||||
| 9 | sub run { | ||||||
| 10 | 3 | 3 | 1 | 51 | my ($self, @args) = @_; | ||
| 11 | |||||||
| 12 | 3 | 100 | 14 | die $self->usage unless getopt \@args, 'f|full' => \(my $full); | |||
| 13 | |||||||
| 14 | # Class | ||||||
| 15 | 2 | 100 | 11 | my $name = $args[0] // 'MyPlugin'; | |||
| 16 | 2 | 100 | 13 | my $class = $full ? $name : "Mojolicious::Plugin::$name"; | |||
| 17 | 2 | 10 | my $dir = join '-', split(/::/, $class); | ||||
| 18 | 2 | 8 | my $app = class_to_path $class; | ||||
| 19 | 2 | 27 | $self->render_to_rel_file('class', "$dir/lib/$app", {class => $class, name => $name}); | ||||
| 20 | |||||||
| 21 | # Test | ||||||
| 22 | 2 | 21 | $self->render_to_rel_file('test', "$dir/t/basic.t", {name => $name}); | ||||
| 23 | |||||||
| 24 | # Makefile | ||||||
| 25 | 2 | 25 | $self->render_to_rel_file('makefile', "$dir/Makefile.PL", {class => $class, path => $app}); | ||||
| 26 | } | ||||||
| 27 | |||||||
| 28 | 1; | ||||||
| 29 | |||||||
| 30 | =encoding utf8 | ||||||
| 31 | |||||||
| 32 | =head1 NAME | ||||||
| 33 | |||||||
| 34 | Mojolicious::Command::Author::generate::plugin - Plugin generator command | ||||||
| 35 | |||||||
| 36 | =head1 SYNOPSIS | ||||||
| 37 | |||||||
| 38 | Usage: APPLICATION generate plugin [OPTIONS] [NAME] | ||||||
| 39 | |||||||
| 40 | mojo generate plugin | ||||||
| 41 | mojo generate plugin TestPlugin | ||||||
| 42 | mojo generate plugin -f MyApp::Plugin::AwesomeFeature | ||||||
| 43 | |||||||
| 44 | Options: | ||||||
| 45 | -f, --full Do not prepend "Mojolicious::Plugin::" to the plugin name | ||||||
| 46 | -h, --help Show this summary of available options | ||||||
| 47 | |||||||
| 48 | =head1 DESCRIPTION | ||||||
| 49 | |||||||
| 50 | L |
||||||
| 51 | plugins. | ||||||
| 52 | |||||||
| 53 | This is a core command, that means it is always enabled and its code a good example for learning to build new commands, | ||||||
| 54 | you're welcome to fork it. | ||||||
| 55 | |||||||
| 56 | See L |
||||||
| 57 | |||||||
| 58 | =head1 ATTRIBUTES | ||||||
| 59 | |||||||
| 60 | L |
||||||
| 61 | the following new ones. | ||||||
| 62 | |||||||
| 63 | =head2 description | ||||||
| 64 | |||||||
| 65 | my $description = $plugin->description; | ||||||
| 66 | $plugin = $plugin->description('Foo'); | ||||||
| 67 | |||||||
| 68 | Short description of this command, used for the command list. | ||||||
| 69 | |||||||
| 70 | =head2 usage | ||||||
| 71 | |||||||
| 72 | my $usage = $plugin->usage; | ||||||
| 73 | $plugin = $plugin->usage('Foo'); | ||||||
| 74 | |||||||
| 75 | Usage information for this command, used for the help screen. | ||||||
| 76 | |||||||
| 77 | =head1 METHODS | ||||||
| 78 | |||||||
| 79 | L |
||||||
| 80 | following new ones. | ||||||
| 81 | |||||||
| 82 | =head2 run | ||||||
| 83 | |||||||
| 84 | $plugin->run(@ARGV); | ||||||
| 85 | |||||||
| 86 | Run this command. | ||||||
| 87 | |||||||
| 88 | =head1 SEE ALSO | ||||||
| 89 | |||||||
| 90 | L |
||||||
| 91 | |||||||
| 92 | =cut | ||||||
| 93 | |||||||
| 94 | __DATA__ |