vlib: add recursive macro expander to debug cli 97/27597/2
authorDave Barach <dave@barachs.net>
Thu, 18 Jun 2020 21:04:18 +0000 (17:04 -0400)
committerDamjan Marion <dmarion@me.com>
Fri, 19 Jun 2020 07:03:34 +0000 (07:03 +0000)
commit961e3c8428be81ae74f7e8ee293b16808a74d45e
treee4fbff493e10fb6a6979d0ae503b77e569d8f4f2
parentfb4df27faecde54e610d41a84d9ee71234347316
vlib: add recursive macro expander to debug cli

All of the pieces have been sitting around for years.

Added several debug CLI commands:

"define <variable-name> <value>"
"undefine <variable-name>"
"show macro [noeval]"
"echo <whatever>"

Macros may refer to other macros. To defer evaluation:
"define foo \$(bar)" or some such.

The macro evaluator is not smart about "define foo \$(foo)" or more
complicated circular definitions, so don't do that.

Environment variables are available, simply use $<name-of-environment-vbl>

The macro expander has a table of (overrideable) builtin names, which
are evaluated by calling functions.

Simple example:

echo $USER
define ip1 192.168.1.1/24
define ip2 192.168.2.1/24

loop create
loop create
set int ip address loop0 $ip1
set int ip address loop1 $ip2
show int addr
show macro
undefine ip1
undefine ip2

Type: feature

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I08a800647bac573d8ae3cfd75c40061d41c5f976
src/vat/main.c
src/vat/vat.h
src/vlib/unix/cli.c
src/vppinfra/macros.c
src/vppinfra/macros.h
src/vppinfra/test_macros.c