/[Frey]/trunk/lib/Frey/SVK.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/SVK.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 552 - (hide annotations)
Thu Nov 27 15:40:12 2008 UTC (15 years, 4 months ago) by dpavlin
File size: 1057 byte(s)
collect added files to changed, apply Frey::Web to fix wired bug
1 dpavlin 485 package Frey::SVK;
2     use Moose;
3    
4 dpavlin 535 extends 'Frey';
5     with 'Frey::Web';
6 dpavlin 498
7 dpavlin 505 sub svk {
8     my ( $self, $exec, $coderef ) = @_;
9     open(my $svk, '-|', 'svk ' . $exec) or die "svk $exec: $@";
10     while(<$svk>) {
11     chomp;
12     $coderef->( $_ );
13     }
14     close($svk) or die "can't close svk $exec: $@";
15     }
16    
17 dpavlin 485 sub modified {
18     my ($self) = @_;
19     my @modified;
20 dpavlin 505 my $svk = $self->svk('status -q', sub {
21 dpavlin 552 push @modified, $1 if /^(M|A)\s+(.+)/;
22 dpavlin 505 });
23 dpavlin 485 return @modified;
24     }
25    
26 dpavlin 505 our $info; # cache, we use it on every hit
27     sub info {
28     my ($self) = @_;
29     return $info if $info;
30     my $svk = $self->svk('info', sub {
31     my ( $label, $value ) = split(/:\s+/, $_, 2);
32 dpavlin 535 $info->{$label} = $value if $label;
33 dpavlin 505 });
34     return $info;
35     }
36    
37 dpavlin 485 sub as_data {
38     my ($self) = @_;
39     {
40     modified => [ $self->modified ],
41     }
42     }
43    
44 dpavlin 498 sub as_markup {
45     my ($self) = @_;
46    
47     my $status = `svk status -q`;
48     my $diff = `svk diff`;
49    
50 dpavlin 552 Frey::Web->meta->apply( $self ); # provide html_escape
51    
52 dpavlin 498 my $html
53     = qq|<pre>$status</pre><hr><pre>|
54 dpavlin 537 . $self->html_escape( $diff )
55 dpavlin 498 . qq|</pre>|
56     ;
57     warn "diff ",length($html)," bytes";
58    
59     return $html;
60     }
61    
62 dpavlin 485 1;

  ViewVC Help
Powered by ViewVC 1.1.26