From b794042ece30a458b7bfa934975508fd568a1e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= Date: Thu, 19 Jan 2012 11:27:25 +0100 Subject: [PATCH] Allow multiple rulesdirs --- lib/Config/Augeas/Validator.pm | 37 +++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/lib/Config/Augeas/Validator.pm b/lib/Config/Augeas/Validator.pm index 25c3b69..4e84e97 100644 --- a/lib/Config/Augeas/Validator.pm +++ b/lib/Config/Augeas/Validator.pm @@ -251,22 +251,24 @@ sub play { $self->load_conf($self->{conffile}); $self->play_one(@files); } else { - my $rulesdir = $self->{rulesdir}; - opendir (RULESDIR, $rulesdir) - or die MSG_ERR.": Could not open rules directory $rulesdir: $!\n"; - while (my $conffile = readdir(RULESDIR)) { - next unless ($conffile =~ /.*\.ini$/); - $self->{conffile} = "$rulesdir/$conffile"; - $self->load_conf($self->{conffile}); - next unless ($self->{cfg}->val(CONF_DEFAULT_SECTION, CONF_PATTERN)); - - my $filtered_files = $self->filter_files(\@files); - my $elems = @$filtered_files; - next unless ($elems > 0); - - $self->play_one(@$filtered_files); + my @rulesdirs = split(/:/, $self->{rulesdir}); + foreach my $rulesdir (@rulesdirs) { + opendir (RULESDIR, $rulesdir) + or die MSG_ERR.": Could not open rules directory $rulesdir: $!\n"; + while (my $conffile = readdir(RULESDIR)) { + next unless ($conffile =~ /.*\.ini$/); + $self->{conffile} = "$rulesdir/$conffile"; + $self->load_conf($self->{conffile}); + next unless ($self->{cfg}->val(CONF_DEFAULT_SECTION, CONF_PATTERN)); + + my $filtered_files = $self->filter_files(\@files); + my $elems = @$filtered_files; + next unless ($elems > 0); + + $self->play_one(@$filtered_files); + } + closedir(RULESDIR); } - closedir(RULESDIR); } } @@ -472,7 +474,7 @@ sub assert { push @lines, line_num($file, $span_start); $got_span = 1; } else { - $self->msg_debug("No span information for node $node"); + $self->debug_msg("No span information for node $node"); } } $msg .= "\n Found $count bad node(s) on line(s): ".join(', ', @lines)."." @@ -515,6 +517,9 @@ __END__ exit $validator->{err}; +$rulesdir points to one or more directories of rules, separated by colons. + + =head1 CONFIGURATION The B configuration files are INI files.