[![Actions Status](https://github.com/cho45/Config-ENV/actions/workflows/test.yml/badge.svg)](https://github.com/cho45/Config-ENV/actions) # NAME Config::ENV - Various config determined by %ENV # SYNOPSIS package MyConfig; use Config::ENV 'PLACK_ENV'; # use $ENV{PLACK_ENV} to determine config common +{ name => 'foobar', }; config development => +{ dsn_user => 'dbi:mysql:dbname=user;host=localhost', }; config test => +{ dsn_user => 'dbi:mysql:dbname=user;host=localhost', }; config production => +{ dsn_user => 'dbi:mysql:dbname=user;host=127.0.0.254', }; config production_bot => +{ parent('production'), bot => 1, }; # Use it use MyConfig; MyConfig->param('dsn_user'); #=> ... # DESCRIPTION Config::ENV is for switching various configurations by environment variable. # CONFIG DEFINITION use this module in your config package: package MyConfig; use Config::ENV 'FOO_ENV'; common +{ name => 'foobar', }; config development => +{}; config production => +{}; 1; - common($hash) Define common config. This $hash is merged with specific environment config. - config($env, $hash); Define environment config. This $hash is just enabled in $env environment. - parent($env); Expand $env configuration to inherit it. - load($filename); \`do $filename\` and expand it. This can be used following: # MyConfig.pm common +{ API_KEY => 'Set in config.pl', API_SECRET => 'Set in config.pl', load('config.pl), }; # config.pl +{ API_KEY => 'XFATEAFAFASG', API_SECRET => 'ced3a7927fcf22cba72c2559326be2b8e3f14a0f', } ## EXPORT You can specify default export name in config class. If you specify 'export' option as following: package MyConfig; use Config::ENV 'FOO_ENV', export => 'config'; ...; and use it with 'config' function. package Foobar; use MyConfig; # exports 'config' function config->param('...'); # METHODS - config->param($name) Returns config variable named $name. - $guard = config->local(%hash) This is for scope limited config. You can use this when you use other values in temporary. Returns guard object. is config->param('name'), 'original value'; { my $guard = config->local(name => 'localized'); is config->param('name'), 'localized'; }; is config->param('name'), 'original value'; - config->env Returns current environment name. - config->current Returns current configuration as HashRef. # AUTHOR cho45 # SEE ALSO # LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.