The klish is a framework for implementing a CISCO-like CLI on a UNIX systems. It is configurable by XML files.
https://src.libcode.org/download/klish/

Serj Kalichev 397396080e Fix warnings in lua plugin build on linux %!s(int64=11) %!d(string=hai) anos
bin 518613d8c6 Remove legacy global cookie %!s(int64=11) %!d(string=hai) anos
clish 357c1f223d Use context API %!s(int64=11) %!d(string=hai) anos
contrib d32755628a Debian: Add debian text to contrib/README %!s(int64=11) %!d(string=hai) anos
debian 99b81c886a Debian: Fix some lintian bugs %!s(int64=11) %!d(string=hai) anos
examples e7c62e0a80 Get content of <PLUGIN>...</PLUGIN> %!s(int64=11) %!d(string=hai) anos
konf 21e5c5ae08 Fix UNIX_PATH_MAX portability problem. Thanks to S.Galabov %!s(int64=11) %!d(string=hai) anos
lub b306e0bf13 Don't compile debug _dump.c code %!s(int64=11) %!d(string=hai) anos
plugins 397396080e Fix warnings in lua plugin build on linux %!s(int64=11) %!d(string=hai) anos
tinyrl bdbe49caf9 Restore proper tty mode %!s(int64=11) %!d(string=hai) anos
xml-examples 013f60c901 Implement a simple trim function. Use trim to get only the config string without any leading/trailing whitespace %!s(int64=11) %!d(string=hai) anos
.gitignore f861b3cd57 Rename some files. Stop using init hook - init Lua interpreter from within the plugin_init function. Register action handler as a sym instead of as a hook. Once we have plugin_fini ready I'll remove the fini hook as well. %!s(int64=11) %!d(string=hai) anos
CHANGES cc624ef42c Redirect readers of CHANGES and ISSUES to the actual web pages %!s(int64=12) %!d(string=hai) anos
ChangeLog edce0a7c8e Adding Debian package required files %!s(int64=11) %!d(string=hai) anos
ISSUES cc624ef42c Redirect readers of CHANGES and ISSUES to the actual web pages %!s(int64=12) %!d(string=hai) anos
LICENCE b81ff592c3 From: Emmanuel Deloget <logout@free.fr> %!s(int64=12) %!d(string=hai) anos
Makefile.am fd67d0784a Move internal plugin to plugins/default %!s(int64=11) %!d(string=hai) anos
README 4632c1a5b8 Remove legacy information from README %!s(int64=12) %!d(string=hai) anos
autogen.sh 8cdf6d307a Create m4 dir within autogen.sh script %!s(int64=12) %!d(string=hai) anos
clish.xsd fd67d0784a Move internal plugin to plugins/default %!s(int64=11) %!d(string=hai) anos
configure.ac 5b8f69a6bd Conditionally build Lua plugin only if --with-lua is given to configure; Currently we look for Lua lib and headers only in the standard search path. If they're somewhere else - the user will have to specify that by passing appropriate CPPFLAGS and/or LDFLAGS to configure %!s(int64=11) %!d(string=hai) anos

README

See the http://klish.googlecode.com page for information about klish.