Dist-Zilla-Plugin-Subversion-Check

 view release on metacpan or  search on metacpan

lib/Dist/Zilla/Plugin/Subversion/Check.pm  view on Meta::CPAN


has '_repo_head_revision' => ( is => 'ro', isa => 'Int', lazy => 1,
	default => sub {
		my $self = shift;
		my $rev;
		$self->svn->info("", undef, 'HEAD', sub { $rev = $_[1]->rev }, 0);
		return($rev);
	}
);

has '_svn_status' => ( is => 'ro', isa => 'HashRef[ArrayRef[Str]]', lazy_build => 1 );

sub _build__svn_status {
	my $self = shift;
	my $ret = { 'untracked' => [], 'added' => [], 'missing' => [], 'deleted' => [],
		'modified' => [], 'merged' => [], 'conflicted' => [] };
	$self->svn->status('', 'HEAD', sub {
		if($_[1]->text_status == 2) { push(@{$ret->{'untracked'}}, $_[0]); }
		if($_[1]->text_status == 4) { push(@{$ret->{'added'}}, $_[0]); }
		if($_[1]->text_status == 5) { push(@{$ret->{'missing'}}, $_[0]); }
		if($_[1]->text_status == 6) { push(@{$ret->{'deleted'}}, $_[0]); }
		if($_[1]->text_status == 8) { push(@{$ret->{'modified'}}, $_[0]); }
		if($_[1]->text_status == 9) { push(@{$ret->{'merged'}}, $_[0]); }
		if($_[1]->text_status == 10) { push(@{$ret->{'conflicted'}}, $_[0]); }
	}, 1, 1, 1, 0);

	return($ret);
}

foreach my $i ('untracked', 'added', 'missing', 'deleted', 'modified', 'merged', 'conflicted') {
	has '_'.$i.'_files' => (
		is => 'ro', isa => 'ArrayRef[Str]', lazy => 1,
		traits => [ 'Array' ],
		default => sub {
			my $self = shift;
			return($self->_svn_status->{$i});
		},
		handles => {
			'_'.$i.'_files_count' => 'count',
		},
	);
}



( run in 1.835 second using v1.01-cache-2.11-cpan-5f2e87ce722 )