logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

MooX::ConfigFromFile::Role - Moo eXtension for initializing objects from config file

Acknowledgements

       Toby Inkster suggested to rely on BUILDARGS instead of intercepting object creation with nasty hacks. He
       also taught me a bit more how Moo(se) works.

Attributes

       This role uses following attributes which might be suitable customized by overloading the appropriate
       builder or pass defaults in construction arguments.

       Be sure to read "ATTRIBUTES" in MooX::File::ConfigDir, especially "config_identifier" in
       MooX::File::ConfigDir to understand how the "config_dirs" are build.

       When you miss a directory - see "plug_dir_source" in File::ConfigDir and File::ConfigDir::Plack.

   config_prefix
       This attribute is a string and defaults to FindBin's $Script. It's interpreted as the basename of the
       config file name to use.

   config_prefixes
       This attribute is an array of strings and defaults to "<[ config_prefix ]">.

   config_prefix_map_separator
       This attribute is a string and contains the character which is used building config_prefix_map from
       config_prefixes.

   config_prefix_map
       This attribute is an array of strings containing all config-prefixes joint together "($0, $0.$1,
       $0.$1.$2, ...)" using config_prefix_map_separator.

   config_files_pattern
       This attribute contains a cross-product of config_prefix_map and config_extensions. Both are concatenated
       using the shell wildcard '*'.

   config_dirs
       This attribute is consumed from MooX::File::ConfigDir.  It might not be smart to override - but possible.
       Use with caution.

   config_extensions
       This attribute defaults to list of extensions from Config::Any.

   config_files
       This attribute contains the list of existing files in config_dirs matching config_prefix .
       config_extensions.  Search is operated by File::Find::Rule.

   raw_loaded_config
       This attribute contains the config as loaded from file system in an array of "filename => \%content".

   sorted_loaded_config
       This attribute contains the loaded files from filesystem sorted by string in the same format as
       raw_loaded_config (array of "filename => \%content").

       The default algorithm is sorted by filename (mind: '-' < '.').

   loaded_config
       This attribute contains the config loaded and transformed while constructing the instance. Construction
       is done from sorted_loaded_config, ignoring the filename part.

       For classes set up using

         use MooX::ConfigFromFile config_singleton = 1;

       this attribute is cached from the very first construction and fed by overwritten builder. The content of
       this attribute is passed to lower BUILDARGS.

Author

       Jens Rehsack, "<rehsack at cpan.org>"

Description

       This role adds a initializing sub around BUILDARGS and puts all what could read from config files into
       the hash which will be used to construct the final object.

       While it does that, it internally calls it's own _build_* methods (_build_config_prefix,
       _build_config_files and _build_loaded_config) unless the appropriate attributes are already in $params.

Name

       MooX::ConfigFromFile::Role - Moo eXtension for initializing objects from config file

See Also