NAME

Vulcan::OptConf - Get command line options.

SYNOPSIS

use Vulcan::OptConf;

$Vulcan::OptConf::ARGC = -1;
@Vulcan::OptConf::CONF = qw( pass_through );

my $option = Vulcan::OptConf->load( '/conf/file' );

my %foo = $option->dump( 'foo' );

my %opt = $option->set( bar => 'baz' )->get( 'timeout=i', 'verbose' )->dump;

METHODS

load( $conf )

Load options from a YAML file $conf, which if unspecified, defaults to $RealBin/.config, or $RealBin/../.config, if either exists. Returns object.

dump( $name )

Dump options by $name, or that of $0 if $name is unspecified. Returns HASH in scalar context or flattened HASH in list context.

set( %opt )

Set options specified by %opt for $0. Returns object.

get( @option )

Invoke Getopt::Long to get @option, if any specified. Returns object.

Getopt::Long is configured through @CONF.

The leftover @ARGV size is asserted through $ARGC. @ARGV cannot be empty if $ARGC is negative, otherwise size of @ARGV needs to equal $ARGC.

assert( @option )

print help and exit, if any of @option is not defined.

macro( $path )

Replace $ROOT in $path if defined.