NAME
Config::Model::SimpleUI - Simple interface for Config::Model
VERSION
version 2.155
SYNOPSIS
use Config::Model;use Config::Model::SimpleUI ;# define configuration tree objectmy $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 idindex_type => 'string',cargo => {type => 'node',config_class_name => 'Foo'},},],) ;my $inst = $model->instance(root_class_name => 'MyClass' );my $root = $inst->config_root ;# put datamy $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.plclass ui:$ lsfoo bar hash_of_nodesclass ui:$ ll hash_of_nodesname value type commenthash_of_nodes <Foo> node hash keys: "en" "fr"class ui:$ cd hash_of_nodes:enclass ui: hash_of_nodes:en $ llname value type commentfoo hello stringbar [undef] stringclass ui: hash_of_nodes:en $ set bar=bonjourclass ui: hash_of_nodes:en $ llname value type commentfoo hello stringbar bonjour stringclass 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=FOOhash_of_nodes:enfoo=hellobar=bonjour -hash_of_nodes:frfoo=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>"or"cd -"to go up one node or"cd !"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