--- 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
|;
- $html .= qq|- $_
| foreach map { $_->name } @{ $repo->projects };
- $html .= qq|
|;
-
- $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";