AnyEvent-Git-Wrapper
view release on metacpan or search on metacpan
lib/AnyEvent/Git/Wrapper.pm view on Meta::CPAN
{
$cv = pop;
}
else
{
if($self->{ae_cache_version} && $self->{ae_version})
{ return $self->{ae_version} }
$self->{ae_version} = $self->SUPER::version(@_);
return $self->{ae_version};
}
if($self->{ae_cache_version} && $self->{ae_version})
{
$cv->send($self->{ae_version});
}
else
{
$self->RUN('version', sub {
my $out = eval { shift->recv };
if($@)
{
$cv->croak($@);
}
else
{
$self->{ae_version} = $out->[0];
$self->{ae_version} =~ s/^git version //;
$cv->send($self->{ae_version});
}
});
}
$cv;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
AnyEvent::Git::Wrapper - Wrap git command-line interface without blocking
=head1 VERSION
version 0.10
=head1 SYNOPSIS
use AnyEvent::Git::Wrapper;
# add all files and make a commit...
my $git = AnyEvent::Git::Wrapper->new($dir);
$git->add('.', sub {
$git->commit({ message => 'initial commit' }, sub {
say "made initial commit";
});
});
=head1 DESCRIPTION
B<DEPRECATED>: May go away at some point.
This module provides a non-blocking and blocking API for git in the style and using the data
structures of L<Git::Wrapper>. For methods that execute the git binary, if the last argument is
either a code reference or an L<AnyEvent> condition variable, then the command is run in
non-blocking mode and the result will be sent to the condition variable when the command completes.
For most commands (all those but C<status>, C<log> and C<version>), the result comes back via the
C<recv> method on the condition variable as two array references, one representing the standard out
and the other being the standard error. Because C<recv> will return just the first value if
called in scalar context, you can retrieve just the output by calling C<recv> in scalar context.
# ignoring stderr
$git->branch(sub {
my $out = shift->recv;
foreach my $line (@$out)
{
...
}
});
# same thing, but saving stderr
$git->branch(sub {
my($out, $err) = shit->recv;
foreach my $line(@$out)
{
...
}
});
Like L<Git::Wrapper>, you can also access the standard output and error via the C<OUT> and C<ERR>, but care
needs to be taken that you either save the values immediately if other commands are being run at the same
time.
$git->branch(sub {
my $out = $git->OUT;
foreach my $line (@$out)
{
...
}
});
If git signals an error condition the condition variable will croak, so you will need to wrap your call
to C<recv> in an eval if you want to handle it:
$git->branch(sub {
my $out = eval { shift->recv };
if($@)
{
warn "error: $@";
return;
}
...
});
=head1 CONSTRUCTOR
( run in 0.436 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )