NAME
Config::Model::Backend::PlainFile - Read and write config as plain file
VERSION
version 2.144
SYNOPSIS
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.
DESCRIPTION
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 type and file mapping
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
File mapping
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.
Methods
read_leaf
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.
read_hash (obj,elt,check,file,args);
Like read_leaf for hash elements.
read_list
Parameters: (obj, elt, check, file, args)
Like read_leaf for list elements.
write
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).
AUTHOR
Dominique Dumont, (ddumont at cpan dot org)
SEE ALSO
Config::Model, Config::Model::BackendMgr, Config::Model::Backend::Any,
AUTHOR
Dominique Dumont
COPYRIGHT AND LICENSE
This software is Copyright (c) 2005-2021 by Dominique Dumont.
This is free software, licensed under:
The GNU Lesser General Public License, Version 2.1, February 1999