package Pg::CLI::pg_config; BEGIN { $Pg::CLI::pg_config::VERSION = '0.07'; } use Moose; use namespace::autoclean; use MooseX::Params::Validate qw( validated_hash validated_list ); use MooseX::SemiAffordanceAccessor; use MooseX::Types::Moose qw( HashRef Maybe Str ); with 'Pg::CLI::Role::Executable'; has _config_info => ( is => 'ro', isa => HashRef [ Maybe [Str] ], init_arg => undef, lazy => 1, builder => '_build_config_info', ); my @attrs = qw( bindir docdir htmldir includedir pkgincludedir includedir_server libdir pkglibdir localedir mandir sharedir sysconfdir pgxs configure cc cppflags cflags cflags_sl ldflags ldflags_sl libs version ); for my $attr (@attrs) { has $attr => ( is => 'ro', isa => Maybe[Str], init_arg => undef, lazy => 1, default => sub { $_[0]->_config_info()->{$attr} }, ); } sub _build_config_info { my $self = shift; my %info; for my $line ( $self->_pg_config_output() ) { chomp $line; my ( $key, $val ) = split / = /, $line, 2; $key =~ s/-/_/; $info{ lc $key } = $val =~ /\S/ ? $val : undef; } return \%info; } # Separate method so it can be overridden for tests sub _pg_config_output { return `pg_config`; } __PACKAGE__->meta()->make_immutable(); 1; # ABSTRACT: Wrapper for the F<psql> utility =pod =head1 NAME Pg::CLI::pg_config - Wrapper for the F<psql> utility =head1 VERSION version 0.07 =head1 SYNOPSIS my $pg_config = Pg::CLI::pg_config->new(); print $pg_config()->sharedir(); print $pg_config()->version(); =head1 DESCRIPTION This class provides a wrapper for the F<pg_config> utility. =head1 METHODS This class provides the following methods: =head2 Pg::CLI::pg_config->new() The constructor accepts one parameter: =over 4 =item * executable The path to F<pg_config>. By default, this will look for F<pg_config> in your path and throw an error if it cannot be found. =back =head2 Config Info Methods This class provides the following methods, each of which returns the relevant configuration info. If there was no value for the item, the method returns C<undef>. =over 4 =item * $pg_config->bindir() =item * $pg_config->docdir() =item * $pg_config->htmldir() =item * $pg_config->includedir() =item * $pg_config->pkgincludedir() =item * $pg_config->includedir_server() =item * $pg_config->libdir() =item * $pg_config->pkglibdir() =item * $pg_config->localedir() =item * $pg_config->mandir() =item * $pg_config->sharedir() =item * $pg_config->sysconfdir() =item * $pg_config->pgxs() =item * $pg_config->configure() =item * $pg_config->cc() =item * $pg_config->cppflags() =item * $pg_config->cflags() =item * $pg_config->cflags_sl() =item * $pg_config->ldflags() =item * $pg_config->ldflags_sl() =item * $pg_config->libs() =item * $pg_config->version() =back =head1 BUGS See L<Pg::CLI> for bug reporting details. =head1 AUTHOR Dave Rolsky <autarch@urth.org> =head1 COPYRIGHT AND LICENSE This software is Copyright (c) 2010 by Dave Rolsky. This is free software, licensed under: The Artistic License 2.0 =cut __END__