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<VCP::Dest::ab>, L<vcp>.
=head1 AUTHOR
Timothee 'TTimo' Besset <ttimo@ttimo.net>
=head1 COPYRIGHT
Copyright (c) 2003, Timothee Besset
Terms of use .. dunno yet, assume BSD-type license
=cut
1