Folks, why do we need geronimo-cli and geronimo-deploy-tool as well as geronimo-commands? geronimo-cli seems to be the previous command-line abstraction bits, and geronimo-deploy-tool their implementation. I think this is all very wasteful since geronimo-commands via GShell provides a much richer environment for developing command line tools.

For example with GShell there is no need for the *MetaData, *Args, or *ArgsImpl classes. GShell detects and/or generates most of this stuff automatically.

Looks like most of the geronimo-commands simply adapt GShell's argument/option processing to the geronimo-cli bits, then invoke geronimo-deploy-tool commands, which then spend most of their life doing more argument processing and validation, before they actually do any work. This seems very wasteful.

Additionally there are some integration issues between geronimo-cli and gshell mostly relating to IO bits. For example, DeployUtils doesn't use a GShell IO handle, but a ConsoleReader, so its commands can't easily detect when --quiet or --verbose was enabled and adjust output, or use the io.info(), io.verbose(), io.error() helpers which do that for you automatically (with nice Slf4j-style {} argument handling).

Basically... I'm wondering why we need to have 2 sets of frameworks for cli features.

--jason

Reply via email to