NAME
Config::Model::SimpleUI - Simple interface for Config::Model
VERSION
version 2.155
SYNOPSIS
use
Config::Model;
use
Config::Model::SimpleUI ;
# define configuration tree object
my
$model
= Config::Model->new;
$model
->create_config_class(
name
=>
"Foo"
,
element
=> [
[
qw/foo bar/
] => {
type
=>
'leaf'
,
value_type
=>
'string'
},
]
);
$model
->create_config_class (
name
=>
"MyClass"
,
element
=> [
[
qw/foo bar/
] => {
type
=>
'leaf'
,
value_type
=>
'string'
},
hash_of_nodes
=> {
type
=>
'hash'
,
# hash id
index_type
=>
'string'
,
cargo
=> {
type
=>
'node'
,
config_class_name
=>
'Foo'
},
},
],
) ;
my
$inst
=
$model
->instance(
root_class_name
=>
'MyClass'
);
my
$root
=
$inst
->config_root ;
# put data
my
$steps
= 'foo=FOO hash_of_nodes:fr foo=bonjour -
hash_of_nodes:en foo=hello ';
$root
->load(
steps
=>
$steps
);
my
$ui
= Config::Model::SimpleUI->new(
root
=>
$root
,
title
=>
'My class ui'
,
prompt
=>
'class ui'
,
);
# engage in user interaction
$ui
-> run_loop ;
$root
->dump_tree ;
Once the synopsis above has been saved in my_test.pl
, you can do:
$ perl my_test.pl
class ui:$ ls
foo bar hash_of_nodes
class ui:$ ll hash_of_nodes
name value type comment
hash_of_nodes <Foo> node hash
keys
:
"en"
"fr"
class ui:$ cd hash_of_nodes:en
class ui: hash_of_nodes:en $ ll
name value type comment
foo hello string
bar [
undef
] string
class ui: hash_of_nodes:en $ set bar=bonjour
class ui: hash_of_nodes:en $ ll
name value type comment
foo hello string
bar bonjour string
class ui: hash_of_nodes:en $ ^D
At the end, the test script dumps the configuration tree. The modified bar
value can be found in there:
foo=FOO
hash_of_nodes:en
foo=hello
bar=bonjour -
hash_of_nodes:fr
foo=bonjour - -
DESCRIPTION
This module provides a pure ASCII user interface using STDIN and STDOUT.
USER COMMAND SYNTAX
- cd ...
-
Jump into node or value element. You can use
cd <element>
,cd <elt:key>
orcd -
to go up one node orcd !
to go to configuration root. - set elt=value
-
Set a leaf value.
- set elt:key=value
-
Set a leaf value locate in a hash or list element.
- clear elt
-
Clear leaf value (set to
undef
) or removed all elements of hash or list. - delete elt
-
Delete leaf value.
- delete elt:key
-
Delete a list or hash element
- display node_name elt:key
-
Display a value
- ls [path] [ pattern ]
-
Show elements of current node or of a node pointed by path. Elements can be filtered with a shell pattern. See inline help for more details.
- ll [-nz] [-v] [ pattern ... ]
-
Describe elements of current node. Can be used with shell patterns or element names. Skip empty element with
-nz
option. Display more information with-v
option - tree [path]
-
Show configuration tree from current node or of a node pointed by path.
- info [path]
-
Show debug information on current node or on the element pointed by path. The debug information may show model parametersm default or computed values.
- help
-
Show available commands.
- desc[ription]
-
Show class description of current node.
- desc(elt)
-
Show description of element from current node.
- desc(value)
-
Show effect of value (for enum)
- changes
-
Show unsaved changes
- check
-
Without parameter, show warnings starting from current node. With an element name as parameter, do the same on the element.
- fix
-
Try to fix warning starting from current node. With an element name as parameter, do the same on the element. With "
!
" as parameter, try to fix warnings starting from root node by calling apply_fixes there. - exit
-
Exit shell
CONSTRUCTOR
parameters
- root
-
Root node of the configuration tree
- title
-
UI title
- prompt
-
UI prompt. The prompt will be completed with the location of the current node.
Methods
run_loop
Engage in user interaction until user enters '^D' (CTRL-D).
AUTHOR
Dominique Dumont, (ddumont at cpan dot org)
SEE ALSO
Config::Model, Config::Model::Instance, Config::Model::Node,
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