package Reply::Config;
our $AUTHORITY = 'cpan:DOY';
$Reply::Config::VERSION = '0.42';
use strict;
use warnings;
# ABSTRACT: config loading for Reply

use Config::INI::Reader::Ordered;
use File::HomeDir;
use File::Spec;

sub new {
    my $class = shift;
    my %opts = @_;

    $opts{file} = '.replyrc'
        unless defined $opts{file};

    my $file = File::Spec->catfile(
            ? ()
            : (File::HomeDir->my_home)),

    my $self = bless {}, $class;

    $self->{file} = $file;
    $self->{config} = Config::INI::Reader::Ordered->new;

    return $self;

sub file { shift->{file} }

sub data {
    my $self = shift;

    return $self->{config}->read_file($self->{file});




=encoding UTF-8

=head1 NAME

Reply::Config - config loading for Reply

=head1 VERSION

version 0.42


  use Reply;
  use Reply::Config;

  Reply->new(config => Reply::Config->new(file => 'something_else'))->run;


This class abstracts out the config file loading, so that other applications
can start up Reply shells using similar logic. Reply configuration is specified
in an INI format - see L<Reply> for more details.

=head1 METHODS

=head2 new(%opts)

Creates a new config object. Valid options are:

=over 4

=item file

Configuration file to use. If the file is specified by a relative path, it will
be relative to the user's home directory, otherwise it will be used as-is.


=head2 file

Returns the absolute path to the config file that is to be used.

=head2 data

Returns the loaded configuration data.

=head1 AUTHOR

Jesse Luehrs <>


This software is Copyright (c) 2016 by Jesse Luehrs.

This is free software, licensed under:

  The MIT (X11) License