App-Git-Info
view release on metacpan or search on metacpan
lib/App/Git/Info.pm view on Meta::CPAN
package App::Git::Info;
$App::Git::Info::VERSION = '0.8.0';
use strict;
use warnings;
use 5.016;
use autodie;
sub new
{
my $class = shift;
my $self = bless {}, $class;
$self->_init(@_);
return $self;
}
sub _argv
{
my $self = shift;
if (@_)
{
$self->{_argv} = shift;
}
return $self->{_argv};
}
sub _init
{
my ( $self, $args ) = @_;
my $argv = $args->{argv} or die "specify argv";
$self->_argv( [ @{$argv} ] );
return;
}
sub _abstract
{
return "Displays a summary of information about the git repository.";
}
sub _description { return _abstract(); }
sub _opt_spec
{
return ();
}
sub _validate_args
{
my ( $self, $opt, $args ) = @_;
# no args allowed but options!
$self->usage_error("No args allowed") if @$args;
return;
}
sub _execute
{
my ( $self, $opt, $args ) = @_;
my $ST = `git status`;
if ($?)
{
return;
}
my $ret =
( $ST =~
s#\A(On branch \S+\n)((?:\S[^\n]*\n)?).*#"â $1".($2 ? "â $2" : "")#emrs
. `git status -s`
. "â Remotes:\n"
. `git remote -v` );
chomp $ret;
say $ret;
return;
}
sub run
{
my $self = shift;
my $argv = [ @{ $self->_argv() } ];
if ( not @$argv )
{
die
qq#Must include a verb/action command - e.g "git-info info" or "git-info help"#;
}
my $cmd = shift @$argv;
if ( $cmd eq "info" )
{
return $self->_execute( undef(), $argv, );
}
elsif ( $cmd eq "help" )
{
print <<'ENDOFHELP';
git-info info - Displays a summary of information about the git repository.
ENDOFHELP
}
else
{
die "must be git-info info!";
}
}
( run in 1.423 second using v1.01-cache-2.11-cpan-39bf76dae61 )