--- trunk/lib/Frey/SVK.pm 2008/11/24 21:31:54 498 +++ trunk/lib/Frey/SVK.pm 2008/11/26 19:43:03 543 @@ -1,19 +1,39 @@ package Frey::SVK; use Moose; -with 'Frey::Escape'; +extends 'Frey'; +with 'Frey::Web'; + +sub svk { + my ( $self, $exec, $coderef ) = @_; + open(my $svk, '-|', 'svk ' . $exec) or die "svk $exec: $@"; + while(<$svk>) { + chomp; + $coderef->( $_ ); + } + close($svk) or die "can't close svk $exec: $@"; +} sub modified { my ($self) = @_; my @modified; - open(my $svk, '-|', 'svk status -q') or die $@; - while(<$svk>) { - chomp; + my $svk = $self->svk('status -q', sub { push @modified, $1 if /^M\s+(.+)/; - } + }); return @modified; } +our $info; # cache, we use it on every hit +sub info { + my ($self) = @_; + return $info if $info; + my $svk = $self->svk('info', sub { + my ( $label, $value ) = split(/:\s+/, $_, 2); + $info->{$label} = $value if $label; + }); + return $info; +} + sub as_data { my ($self) = @_; {