NAME
Config::Model::SimpleUI - Simple interface for Config::Model
VERSION
version 2.145
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 $ ^DAt 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 -nzoption. Display more information with-voption
- 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-2021 by Dominique Dumont.
This is free software, licensed under:
The GNU Lesser General Public License, Version 2.1, February 1999