---
name: "Config::Model::SimpleUI"
section: "3pm"
platform: "linux"
package: "libconfig-model-perl"
version: "2.155-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Config::Model::SimpleUI"
---

# Config::Model::SimpleUI(3pm)

Simple interface for Config::Model

## 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 ;
 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>"` 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
```
