CPAN::Distroprefs#
read and match distroprefs
SYNOPSIS#
use CPAN::Distroprefs;
my %info = (... distribution/environment info ...);
my $finder = CPAN::Distroprefs->find($prefs_dir, \%ext_map);
while (my $result = $finder->next) {
die $result->as_string if $result->is_fatal;
warn($result->as_string), next if $result->is_warning;
for my $pref (@{ $result->prefs }) {
if ($pref->matches(\%info)) {
return $pref;
}
}
}
DESCRIPTION#
This module encapsulates reading Distroprefs and matching them against CPAN distributions.
INTERFACE#
my $finder = CPAN::Distroprefs->find($dir, \%ext_map);
while (my $result = $finder->next) { ... }
Build an iterator which finds distroprefs files in the tree below the given directory. Within the tree directories matching m/^[._]/ are pruned.
%ext_map is a hashref whose keys are file extensions and whose values are modules used to load matching files:
{
'yml' => 'YAML::Syck',
'dd' => 'Data::Dumper',
...
}
Each time $finder->next is called, the iterator returns one of two possible values:
a CPAN::Distroprefs::Result object
undef, indicating that no prefs files remain to be found
RESULTS#
find() returns CPAN::Distroprefs::Result objects to indicate success or failure when reading a prefs file.
Common#
All results share some common attributes:
type#
success, warning, or fatal
file#
the file from which these prefs were read, or to which this error refers (relative filename)
ext#
the file’s extension, which determines how to load it
dir#
the directory the file was read from
abs#
the absolute path to the file
Errors#
Error results (warning and fatal) contain:
msg#
the error message (usually either $! or a YAML error)
Successes#
Success results contain:
prefs#
an arrayref of CPAN::Distroprefs::Pref objects
PREFS#
CPAN::Distroprefs::Pref objects represent individual distroprefs documents. They are constructed automatically as part of success results from find().
data#
the pref information as a hashref, suitable for e.g. passing to Kwalify
match_attributes#
returns a list of the valid match attributes (see the Distroprefs section in CPAN)
currently: env perl perlconfig distribution module
has_any_match#
true if this pref has a ‘match’ attribute at all
has_valid_subkeys#
true if this pref has a ‘match’ attribute and at least one valid match attribute
matches#
if ($pref->matches(\%arg)) { ... }
true if this pref matches the passed-in hashref, which must have a value for each of the match_attributes (above)
LICENSE#
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.