NAME
Config::Model::SimpleUI - Simple interface for Config::Model
VERSION
version 2.154
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 ;
print $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