Analizo
view release on metacpan or search on metacpan
lib/Analizo/Command.pm view on Meta::CPAN
package Analizo::Command;
use App::Cmd::Setup -command;
use strict;
use warnings;
use Class::Inspector;
use Env::Path qw( PATH );
use File::Temp qw( tmpnam );
=head1 NAME
Analizo::Command - global options for tools
=head1 DESCRIPTION
Following the instructions from the L<App::Cmd::Tutorial> we create this module
to be a superclass of every analizo tool, in that way we can have global
options to every analizo tool:
analizo <tool> --help
analizo <tool> --usage
Any analizo tool should implement B<validate()>, method which is called by
B<validate_args()> implemented here. See L<App::Cmd::Command> for details about
B<validate_args()>.
=cut
sub validate_args {
my ($self, $opt, $args) = @_;
if ($self->app->global_options->version) {
$self->usage_error("Invalid option: --version");
}
elsif ($self->app->global_options->usage) {
print $self->app->usage, "\n", $self->usage;
exit 0;
}
$self->validate($opt, $args);
}
sub version_information {
my ($self) = @_;
sprintf("%s version %s", $self->app->arg0, $Analizo::VERSION);
}
sub show_manpage {
my ($self, $package, $command_name) = @_;
my $version_information = $self->version_information;
my $file = Class::Inspector->resolved_filename($package);
if (scalar PATH->Whence('man')) {
my $pod2man = "pod2man --name='analizo-$command_name' --release='$version_information' --center='Analizo documentation'";
if ($^O eq 'freebsd') {
my $tmpfile = tmpnam();
exec("$pod2man '$file' > $tmpfile && man $tmpfile && rm -f $tmpfile");
}
else {
exec("$pod2man '$file' | man -l -");
}
}
elsif (scalar PATH->Whence('less')) {
exec("pod2text '$file' | less");
}
elsif (scalar PATH->Whence('more')) {
exec("pod2text '$file' | more");
}
else {
exec("pod2text '$file'");
}
}
1;
=head1 COPYRIGHT AND AUTHORS
See B<analizo(1)>.
=cut
( run in 1.556 second using v1.01-cache-2.11-cpan-5b529ec07f3 )