The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package DBIx::Tree::Persist::Config;

use strict;
use warnings;

use Config::Tiny;

use Hash::FieldHash ':all';

fieldhash my %config           => 'config';
fieldhash my %config_file_path => 'config_file_path';
fieldhash my %section          => 'section';
fieldhash my %verbose          => 'verbose';

our $VERSION = '1.04';

# -----------------------------------------------

sub init
{
	my($self, $path) = @_;

	$self -> config_file_path($path);

	# Check [global].

	$self -> config(Config::Tiny -> read($path) );
	$self -> section('global');

	if (! ${$self -> config}{$self -> section})
	{
		die "Config file '$path' does not contain the section [@{[$self -> section]}]";
	}

	# Check [x] where x is host=x within [global].

	$self -> section(${$self -> config}{$self -> section}{'host'});

	if (! ${$self -> config}{$self -> section})
	{
		die "Config file '$path' does not contain the section [@{[$self -> section]}]";
	}

	# Move desired section into config, so caller can just use $self -> config to get a hashref.

	$self -> config(${$self -> config}{$self -> section});

}	# End of init.

# -----------------------------------------------

sub new
{
	my($class, %arg)   = @_;
	$arg{verbose}      ||= 0;
	my($self)          = from_hash(bless({}, $class), \%arg);
	my($name)          = '.htdbix.tree.persist.conf';

	my($path);

	for (keys %INC)
	{
		next if ($_ !~ m|DBIx/Tree/Persist/Config.pm|);

		($path = $INC{$_}) =~ s|Config.pm|$name|;
	}

	$self -> init($path);

	return $self;

}	# End of new.

# --------------------------------------------------

1;