Config-Augeas-Validator

 view release on metacpan or  search on metacpan

lib/Config/Augeas/Validator.pm  view on Meta::CPAN

      my $lens = $self->{cfg}->val(CONF_DEFAULT_SECTION, CONF_LENS);
      $self->debug_msg("Finding files for lens $lens");
      my $sys_path = AUGEAS_META_TREE."/files//*[lens =~ regexp('@?${lens}(\.lns)?')]/path";
      $self->debug_msg($sys_path);
      for my $f ($self->{aug}->match($sys_path)) {
         my $p = $self->{aug}->get($f);
         $p =~ s|^/files||;
         $self->debug_msg("Found file $p");
         push @filtered_files, $p;
      }
   } else {
      my $pattern = $self->{cfg}->val(CONF_DEFAULT_SECTION, CONF_PATTERN);
      my $exclude = $self->{cfg}->val(CONF_DEFAULT_SECTION, CONF_EXCLUDE);
      $exclude ||= '^$';

      foreach my $file (@$files) {
         push @filtered_files, $file
            if ($file =~ /^$pattern$/ && $file !~ /^$exclude$/);
      }
   }

   return \@filtered_files;
}

sub tick {
   my ($self) = @_;

   $self->{tick}++;
   my $tick = $self->{tick} % 4;

   my $hourglass; 
    
   $hourglass = "|"  if ( $tick == 0 ); 
   $hourglass = "/"  if ( $tick == 1 ); 
   $hourglass = "-"  if ( $tick == 2 ); 
   $hourglass = "\\" if ( $tick == 3 ); 

   print colored ($hourglass, COLOR_INFO),"\b";
}

sub get_all_files {
   my ($self) = @_;

   my @files;

   $self->{aug}->load();
   for my $f ($self->{aug}->match(AUGEAS_META_TREE."/files//path[. != '']")) {
      my $p = $self->{aug}->get($f);
      $p =~ s|^/files||;
      push @files, $p;
   }

   return @files;
}

sub play {
   my ($self, @infiles) = @_;

   my @files;
   if ($self->{recurse}) {
      printf "\033[?25l"; # hide cursor
      print colored ("I: Recursively analyzing directories ", COLOR_INFO) unless $self->{quiet};
      find sub {
         my $exclude = $self->{exclude};
         $exclude ||= '^$';
         push @files, $File::Find::name
            if(-e && $File::Find::name !~ /^$exclude$/);
         $self->tick unless $self->{quiet}
         }, @infiles;
      print colored("[done]", COLOR_OK),"\n" unless $self->{quiet};
      printf "\033[?25h"; # restore cursor
   } elsif ($#infiles < 0) {
      @files = $self->get_all_files();
      $self->{syswide} = 1;
   }else {
      @files = @infiles;
   }
   
   if ($self->{conffile}) {
      $self->load_conf($self->{conffile});
      $self->play_one(@files);
   } else {
      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);
      }
   }
}


sub set_aug_file {
   my ($self, $file) = @_;

   my $absfile = `readlink -f $file`;
   chomp($absfile);

   my $aug = $self->{aug};
   my $lens = $self->{lens};


   if ($self->{syswide} != 1) {
      $aug->rm("/files");
      if ($aug->count_match(AUGEAS_META_TREE."/load/$lens/lens") == 0) {
         # Lenses with no autoload xfm => bet on lns
         $aug->set(AUGEAS_META_TREE."/load/$lens/lens", "$lens.lns");
      }

      $aug->rm(AUGEAS_META_TREE."/load/$lens/incl");
      $aug->set(AUGEAS_META_TREE."/load/$lens/incl", $absfile);
      $aug->load;
   }

   $aug->defvar('file', "/files$absfile");

   my $err_lens_path = AUGEAS_META_TREE."/load/$lens/error";
   my $err_lens = $aug->get($err_lens_path);
   if ($err_lens) {



( run in 0.537 second using v1.01-cache-2.11-cpan-f56aa216473 )