Scroll to navigation

Config::Model::Value::UpdateFromFile(3pm) User Contributed Perl Documentation Config::Model::Value::UpdateFromFile(3pm)

NAME

Config::Model::Value::UpdateFromFile - Retrieve data from external file

VERSION

version 2.159

SYNOPSIS

    # in a model declaration:
    element => [
        data_from_some_file => {
            type => 'leaf',
            value_type => 'uniline',
            update => {
                # handled by Config::Model::Value::Update
                when_missing => 'warn',
                files => [
                    {
                        # handled by this module, Config::Model::Value::UpdateFromFile
                        type => 'ini',
                        file => "some_file.ini",
                        subpath => "foo.bar"
                    },
                    {
                        # ...
                    }
                ]
            }
        },
    ],

DESCRIPTION

This class retrieves data from external file. Caller must specify the file path, the file type (e.g. JSON, Yaml...) and the path inside the file to retrieve data.

Depending on the file type configured in the model, some modules must be installed.

Supported file types and modules to be installed are:

JSON
YAML::PP
Config::INI::Reader
TOML::Tiny

Constructor

Constructor parameters are:

File path from currrent directory.
File type in lower case, either "ini", "json", "yaml" or "toml".
Path to extract data. See examples below.
location of the calling value element. This is used to log messages.

methods

get_info

Return file and subpath used to extract data.

get_update_value

This method open the file and return the data using subpath.

Examples

INI file

Using the "dist.ini" file:

  [MetaResources]
  homepage          = https://github.com/dod38fr/config-model/wiki
  repository.url    = git://github.com/dod38fr/config-model.git

"homepage" can be retrieved with:

   update => [{
    type => 'ini',
    file => 'dist.ini',
    subpath => 'MetaResources.homepage'
  }]

and "url" with:

   update => [{
    type => 'ini',
    file => 'dist.ini',
    subpath => 'MetaResources.repository\.url'
  }]

YAML file

    update => {
        when_missing => 'warn',
        files => [{
             type => 'yaml',
             file => 'META.yml',
             subpath => 'resources.homepage'}
        ]
    }

Try several files

If may be necessary to try several files:

  update => {
    when_missing => 'ignore',
    files => [
      {
         type => 'yaml',
         file => 'META.yml',
         subpath => 'abstract'
      },
      {
         type => 'json',
         file => 'package.json'
         subpath => 'description'
      }
    ]
  }

SEE ALSO

Config::Model::Value, Config::Model::Value::Update

AUTHOR

Dominique Dumont

COPYRIGHT AND LICENSE

This software is Copyright (c) 2005-2022 by Dominique Dumont.

This is free software, licensed under:

  The GNU Lesser General Public License, Version 2.1, February 1999
2026-03-09 perl v5.40.1