Config::Model::Backend::PlainFile - Read and write config as plain file
version 2.152
use Config::Model;
my $model = Config::Model->new;
my $inst = $model->create_config_class(
name => "WithPlainFile",
element => [
[qw/source new/] => { qw/type leaf value_type uniline/ },
],
rw_config => {
backend => 'plain_file',
config_dir => '/tmp',
},
);
my $inst = $model->instance(root_class_name => 'WithPlainFile' );
my $root = $inst->config_root ;
$root->load('source=foo new=yes' );
$inst->write_back ;
Now "/tmp" directory contains 2 files: "source" and
"new" with "foo" and "yes" inside.
This module is used directly by Config::Model to read or write the content of a
configuration tree written in several files. Each element of the node is
written in a plain file.
Element values are written in one or several files depending on their type.
- leaf
- The leaf value is written in one file. This file can have
several lines if the leaf type is "string"
- list
- The list content is written in one file. Each line of the
file is a value of the list.
- hash
- Not supported
By default, the configuration file is named after the element name (like in
synopsis above).
The "file" parameter can also be used to specify a file name that take
into account the path in the tree using "&index()" and
"&element()" functions from
Config::Model::Role::ComputeFunction.
For instance, with the following model:
class_name => "Foo",
element => [
string_a => { type => 'leaf', value_type => 'string'}
string_b => { type => 'leaf', value_type => 'string'}
],
rw_config => {
backend => 'PlainFile',
config_dir => 'foo',
file => '&element(-).&element',
file_mode => 0644, # optional
}
If the configuration is loaded with "example string_a=something
string_b=else", this backend writes ""something"" in
file "example.string_a" and "else" in file
"example.string_b".
"file_mode" parameter can be used to set the mode of the written file.
"file_mode" value can be in any form supported by "chmod"
in Path::Tiny.
Parameters: "(obj, elt, check, file, args)"
Called by read method to read the file of a leaf element. "args"
contains the arguments passed to read method.
Like read_leaf for hash elements.
Parameters: "(obj, elt, check, file, args)"
Like read_leaf for list elements.
"write" writes a file for each element of the calling class. Works
only for leaf and list elements. Other element type are skipped. Always return
1 (unless it died before).
Dominique Dumont, (ddumont at cpan dot org)
Config::Model, Config::Model::BackendMgr, Config::Model::Backend::Any,
Dominique Dumont
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