NAME
Config::Model::Backend::PlainFile - Read and write config as plain file
VERSION
version 2.155
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-2022 by Dominique Dumont.
This is free software, licensed under:
The GNU Lesser General Public License, Version 2.1, February 1999