--- trunk/lib/SourceSnoop.pm 2008/10/31 19:51:51 213 +++ trunk/lib/Frey/VCI.pm 2008/11/26 16:17:17 535 @@ -1,66 +1,60 @@ -package SourceSnoop; +package Frey::VCI; use Moose; use lib '/rest/cvs/vci/lib'; # FIXME use VCI; -use HTML::Entities qw/encode_entities/; - extends 'Frey'; with 'Frey::Web'; use Data::Dump qw/dump/; -our $debug = 1; - -sub pre_dump { - my $o = shift; - # because Data::Dumper::HTML sucks - my $t; - if ( blessed($o) && $o->can('dump') ) { - $t = $o->dump; - $t =~ s/ {8}/ /gm; - } else { - $t = dump( $o ); - } - return '
' . encode_entities($t) . '

'; -} - -use MooseX::Method; +has 'repo' => ( + is => 'rw', + isa => 'Str', + required => 1, + default => 'file:///home/dpavlin/private/svn/Frey', +); + +has 'type' => ( + is => 'rw', + isa => 'Str', + required => 1, + default => 'Svn', +); + +has 'project' => ( + is => 'rw', + isa => 'Str', + required => 1, + default => 'trunk', +); + +has 'revision' => ( + is => 'rw', + isa => 'Int|Str', + documentation => 'last revision in repository if not specified', +); -method request => positional( - { isa => 'Continuity::RequestHolder', required => 1 }, -) => sub { -#sub request { - my ( $self, $request ) = @_; - - my %param = $request->params; - warn "## params = ",dump( %param ); +sub as_markup { + my ( $self ) = @_; my $html; - my $path = 'file:///home/dpavlin/private/svn/Frey'; my $repo = VCI->connect( - repo => $path, - type => 'Svn', - debug => 1, - ); - - $html .= qq|

Projects

|; - - $request->print( $self->page( title => $path, body => $html ) ); - $request->next; + repo => $self->repo, + type => $self->type, + debug => $self->debug, + ) || die "can't open ",$self->type," ",$self->repo; - %param = $request->params; - warn "## params = ",dump( %param ); + my @projects_available = map { $_->name } @{ $repo->projects }; + die $self->project," not one of valid projects ", dump( @projects_available ) unless grep { $self->project } @projects_available; - my $project = $repo->get_project( name => $param{name} ); - my $rev = $project->head_revision; + my $project = $repo->get_project( name => $self->project ); + my $rev = $self->revision || $project->head_revision; - my $commit = $project->get_commit( revision => $rev ); + my $commit = $project->get_commit( revision => $rev ) || die "can't get revision $rev: $@"; sub div { my ( $class, $text ) = @_; @@ -75,14 +69,12 @@ div( 'commiter', $commit->committer ) . div( 'date', $commit->time->iso8601 ) . div( 'message', $commit->message ) . - '
' . encode_entities( $diff->raw ) . '
' . - pre_dump( $diff ); + '
' . $self->html_escape( $diff->raw ) . '
'; + + $self->add_status({ dump => $diff }); - $request->print( $self->page( - title => $path . '/' . $project->name, - body => $body, - ) ); - $request->next; + $self->title( $self->repo . '/' . $project->name ); + return $body; }; warn "## VCI loaded";