File: InlineSubcommand.pm

package info (click to toggle)
libcli-osprey-perl 0.08-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 200 kB
  • sloc: perl: 843; makefile: 2
file content (77 lines) | stat: -rw-r--r-- 1,203 bytes parent folder | download
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package CLI::Osprey::InlineSubcommand;
use strict;
use warnings;
use Moo;

# ABSTRACT: A class to wrap coderef subcommands
our $VERSION = '0.08'; # VERSION
our $AUTHORITY = 'cpan:ARODLAND'; # AUTHORITY

has 'name' => (
  is => 'ro',
  required => 1,
);

has 'desc' => (
  is => 'bare',
  reader => '_osprey_subcommand_desc',
);

has 'method' => (
  is => 'ro',
  required => 1,
);

has 'parent_command' => (
  is => 'rw',
);

has 'argv' => (
  is => 'rw',
);

sub new_with_options {
  my ($self, %args) = @_;
  $self->parent_command($args{ parent_command });
  $self->argv([ @ARGV ]);
  return $self;
}

sub run {
  my ($self) = @_;
  my $cmd = $self->parent_command;
  my $method = $self->method;

  @_ = ($self->parent_command, @{ $self->argv });
  goto &$method;
}

no Moo;
1;

__END__

=pod

=encoding UTF-8

=head1 NAME

CLI::Osprey::InlineSubcommand - A class to wrap coderef subcommands

=head1 VERSION

version 0.08

=head1 AUTHOR

Andrew Rodland <arodland@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2020 by Andrew Rodland.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut