package VCP::Source::ab ; =head1 NAME VCP::Source::ab - NxN AlienBrain source driver =head1 SYNOPSIS =head1 DESCRIPTION =cut $VERSION = 1.0 ; @ISA = qw( VCP::Source VCP::Utils::ab ); use strict ; use VCP::Source ; use VCP::Utils::ab ; use VCP::Rev ; # use fields ( # 'AB_INFO', ## version information ('ab version') # 'AB_FILES' ## root directory in ab project # ) ; sub init { print "ab init\n" ; my $self = shift ; $self->SUPER::init; $self->repo_id( "ab:" ); $self->ab( [ 'version' ], undef, \$self->{AB_INFO} ); $self->{AB_FILES} = 'neo/sys/linux/' ; } sub handle_header { my $self = shift ; my ( $header ) = @_ ; $header->{rep_type} = 'ab' ; $header->{rep_desc} = $self->{AB_INFO}; $header->{rev_root} = $self->{AB_FILES}; $self->dest->handle_header( $header ) if $self->dest; } sub enum_per_dir { my $dir = $_; $dir =~ s/(.*)".*/$1/s; my @chunks; @chunks = split /^/m, $_; shift @chunks; grep { if ( !/Total of [0-9]* folders, and [0-9]* files\.|Overall Total of [0-1]* folders, and [0-9]* files\.|--------------------|\/$/ ) { chop; $_ = $dir . $_; } } @chunks; } sub scan_metadata { print "ab src scan_metadata\n"; my $self = shift ; # get the files list my $enumobjects ; $self->ab( [ 'enumobjects', $self->{AB_FILES}, '-recursive' ], undef, \$enumobjects ); @_ = map { enum_per_dir() } split /^Directory list of project node: ".*$self->{AB_FILES}/m, $enumobjects; map { my $rev = VCP::Rev->new( action => "add", id => "$_#1", name => "$_", source_name => "$_", source_filebranch_id => "$_", source_repo_id => $self->repo_id, type => "text", branch_id => "trunk", source_branch_id => "trunk", rev_id => "$_#1", source_rev_id => "$_#1", ); $self->queue_rev( $rev ); } @_; } sub get_source_file { my $self = shift ; my $r ; ( $r ) = @_ ; return "/home/timo/foo.file" ; } =head1 SEE ALSO L, L. =head1 AUTHOR Timothee 'TTimo' Besset =head1 COPYRIGHT Copyright (c) 2003, Timothee Besset Terms of use .. dunno yet, assume BSD-type license =cut 1