use strict;
use warnings;

package App::Cmd::Command::version;
$App::Cmd::Command::version::VERSION = '0.326';
use App::Cmd::Command;
BEGIN { our @ISA = 'App::Cmd::Command'; }

# ABSTRACT: display an app's version

#pod =head1 DESCRIPTION
#pod
#pod This plugin implements the C<version> command, often invoked by its switch-like
#pod name, C<--version>. On execution it shows the program name, its base class
#pod with version number, and the full program name.
#pod
#pod =cut

sub command_names { qw/version --version/ }

sub version_for_display {
  $_[0]->version_package->VERSION
}

sub version_package {
  ref($_[0]->app)
}

sub execute {
  my ($self, $opts, $args) = @_;

  printf "%s (%s) version %s (%s)\n",
    $self->app->arg0, $self->version_package,
    $self->version_for_display, $self->app->full_arg0;
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

App::Cmd::Command::version - display an app's version

=head1 VERSION

version 0.326

=head1 DESCRIPTION

This plugin implements the C<version> command, often invoked by its switch-like
name, C<--version>. On execution it shows the program name, its base class
with version number, and the full program name.

=head1 AUTHOR

Ricardo Signes <rjbs@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Ricardo Signes.

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
