=head1 NAME ALPM::Conf - pacman.conf config file parser and ALPM loader =head1 SYNOPSIS use ALPM::Conf; my $conf = ALPM::Conf->new('/etc/pacman.conf'); my $alpm = $conf->parse; # Try again with custom fields: my $value; my %fields = ('CustomField' => sub { $value = shift }); $conf->custom_fields(%fields); $alpm = $conf->parse(); print "$value\n"; # When imported with an argument, a conf file is loaded and # an alpm instance (named $alpm) is imported into the caller's # namespace. use ALPM::Conf '/etc/pacman.conf'; print $alpm->get_arch, "\n"; # This is handy for the command line or shell scripts. % perl -MALPM::Conf=/etc/pacman.conf -e ' for $p ($alpm->localdb->pkgs){ print $p->name, " ", $p->version, "\n"; } ' =head1 DESCRIPTION This class is used to parse the pacman.conf files which are used by ArchLinux's pacman for config files. The configuration fields are used to set ALPM options. A new I<ALPM> object instance is created with corresponding options set. =head1 CONSTRUCTOR =head2 new $OBJ = ALPM::Conf->new($CONF_PATH); =over 4 =item C<$CONF_PATH> The path to the configuration file that should be parsed. =item C<$OBJ> A new I<ALPM::Conf> object. =back =head1 METHODS =head2 parse $ALPM_OBJ = $OBJ->parse() Parses the configuration file that is located at the path provided by the constructor argument. Options and servers are applied to a newly created ALPM object. =over 4 =item C<$ALPM_OBJ> A new instance of an L<ALPM> object. =back =head2 custom_fields undef = $OBJ->custom_fields(%CFIELDS); =over 4 =item C<%CFIELDS> A hash that describes custom fields and the actions that should be performed when a matching field is scanned. The keys of the hash are the field names (case sensitive) and the values are code references. When a field is scanned the code reference is called with the entire line of the field's value as the only argument. =back =head1 IMPORT MAGIC When an import argument is given then special magic is performed. The argument should be the path to a pacman configuration file to load. This .conf file is parsed by a newly created I<ALPM::Conf> instance. The result of the parsing is stored in the importing package's namespace under the name of the C<$alpm> scalar. See the synopsis for an example. If you are not familiar, you can give import arguments the following ways: # Using use: use ALPM::Conf '/etc/pacman.conf'; # Require is more transparent: require ALPM::Conf; ALPM::Conf->import('/etc/pacman.conf'); # On the command-line (see perlrun(1) manpage): perl -MALPM::Conf=/etc/pacman.conf -e '...' =head1 SEE ALSO L<ALPM> =head1 AUTHOR Justin Davis, C<< <juster at cpan dot org> >> =head1 COPYRIGHT AND LICENSE Copyright (C) 2015 by Justin Davis This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.