NAME
Config::Model::SimpleUI - Simple interface for Config::Model
VERSION
version 2.137
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 [ pattern ]
 - 
Show elements of current node. Can be used with a shell pattern.
 - 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
 - 
Show configuration tree from current node.
 - 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-2019 by Dominique Dumont.
This is free software, licensed under:
The GNU Lesser General Public License, Version 2.1, February 1999