[Lxr-commits] CVS: lxr/lib/LXR Common.pm, 1.104, 1.105 Files.pm, 1.23, 1.24
Brought to you by:
ajlittoz
From: Andre-Littoz <ajl...@us...> - 2013-11-07 17:58:51
|
Update of /cvsroot/lxr/lxr/lib/LXR In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv15141/lib/LXR Modified Files: Common.pm Files.pm Log Message: Commin.pm, Files.pm & Files/*: new initialisation interface to Files family and config object cached internally Index: Common.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Common.pm,v retrieving revision 1.104 retrieving revision 1.105 diff -u -d -r1.104 -r1.105 --- Common.pm 24 Sep 2013 07:36:09 -0000 1.104 +++ Common.pm 7 Nov 2013 17:58:48 -0000 1.105 @@ -846,9 +846,7 @@ delete $HTTP->{'param'}{$param}; } - $files = LXR::Files->new( $config->{'sourceroot'} - , $config->{'sourceparams'} - ); + $files = LXR::Files->new($config); die 'Can\'t create Files for ' . $config->{'sourceroot'} if !defined($files); $index = LXR::Index->new( $config->{'dbname'} Index: Files.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Files.pm,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- Files.pm 21 Sep 2013 12:54:52 -0000 1.23 +++ Files.pm 7 Nov 2013 17:58:48 -0000 1.24 @@ -34,60 +34,63 @@ use LXR::Common; -=head2 C<new ($srcroot, $params)> +=head2 C<new ($config)> C<new> is Files object constructor. It dispatches to the specific constructor based on its first argument. =over -=item 1 C<$srcroot> +=item 1 C<$config> -a I<string> containing the repository type (as optional prefix:) -and its location in the file system +a I<reference> to the I<hash> containing configuration parameters for this +tree -=item 1 C<$params> +=over -an optional I<hash> reference from lxr.conf used to pass extra information -to the real constructor +B<Note:> + +=item Perl threads are rather restrictive on the kind of data in +shared variables; it is thus better not to rely on "global" variables +and store a pointer to "global" data inside the object. + +=back =back =cut sub new { - my ( $self, $srcroot, $params ) = @_; + my ( $self, $config ) = @_; my $files; - if ( $srcroot =~ /^CVS:(.*)/i ) { + $config->{'sourceroot'} =~ m/^(\w+):/; + my $container = uc($1); + if ('CVS' eq $container) { require LXR::Files::CVS; - $srcroot = $1; - $files = LXR::Files::CVS->new($srcroot); + $files = LXR::Files::CVS->new($config); } - elsif ( $srcroot =~ /^git:(.*)/i ) { + elsif ('GIT' eq $container) { require LXR::Files::GIT; - $srcroot = $1; - $files = LXR::Files::GIT->new($srcroot, $params); + $files = LXR::Files::GIT->new($config); } - elsif ( $srcroot =~ /^svn:(.*)/i ) { + elsif ('SVN' eq $container) { require LXR::Files::Subversion; - $srcroot = $1; - $files = LXR::Files::Subversion->new($srcroot, $params); + $files = LXR::Files::Subversion->new($config); } - elsif ( $srcroot =~ /^hg:(.*)/i ) { + elsif ('HG' eq $container) { require LXR::Files::Mercurial; - $srcroot = $1; - $files = LXR::Files::Mercurial->new($srcroot, $params); + $files = LXR::Files::Mercurial->new($config); } - elsif ( $srcroot =~ /^bk:(.*)/i ) { + elsif ('BK' eq $container) { require LXR::Files::BK; - $srcroot = $1; - $files = LXR::Files::BK->new($srcroot, $params); + $files = LXR::Files::BK->new($config); } else { require LXR::Files::Plain; - $files = LXR::Files::Plain->new($srcroot); + $files = LXR::Files::Plain->new($config); } + $files->{'config'} = $config; return $files; } @@ -556,7 +559,7 @@ $fileh = $self->getfilehandle ($filename, $releaseid); return undef unless defined($fileh); - $tmp = $config->{'tmpdir'} + $tmp = $self->{'config'}{'tmpdir'} . '/lxrtmp.' . time . '.' . $$ @@ -602,7 +605,7 @@ sub releaserealfilename { my ($self, $filename) = @_; - my $td = $config->{'tmpdir'}; + my $td = $self->{'config'}{'tmpdir'}; if ($filename =~ m!^$td/lxrtmp\.\d+\.\d+\.\d+$!) { unlink($filename); } @@ -657,10 +660,10 @@ my ($self, $path, $node) = @_; return 1 if substr($node, 0, 1) eq '.'; # ignore "dot" dirs - foreach my $ignoredir (@{$config->{'ignoredirs'}}) { + foreach my $ignoredir (@{$self->{'config'}{'ignoredirs'}}) { return 1 if $node eq $ignoredir; } - foreach my $ignoredir (@{$config->{'filterdirs'}}) { + foreach my $ignoredir (@{$self->{'config'}{'filterdirs'}}) { return 1 if ($path.$node) =~ $ignoredir; } return 0; @@ -712,9 +715,9 @@ sub _ignorefiles { my ($self, $path, $node) = @_; - my $ignorepat = $config->{'ignorefiles'}; + my $ignorepat = $self->{'config'}{'ignorefiles'}; return 1 if $node =~ m/$ignorepat/; - foreach my $filterfile (@{$config->{'filterfiles'}}) { + foreach my $filterfile (@{$self->{'config'}{'filterfiles'}}) { return 1 if ($path.$node) =~ $filterfile; } return 0; |