I'm at the beginning of a very large project to build an interactive console for managing clusters of servers. The ultimate goal will have a console server application with a number of global commands, one of which is an ability to switch what I'm calling the "console-mode" to one of three values. Each of those modes will have significantly different syntax.
The console is actually acting as a single aggregate interface for any given set of connected servers, which can dynamically change as the user chooses. If the user chooses to act upon 10 servers, when a given command is entered, it is processed and sent to all 10 servers. Then the user might select to act upon a different set of servers with a different command.
The number of server configuration commands to date (beyond the global commands) involves 1555 "objects" having 22821 properties. All of this needs to be driven by meta-data drawn from instrumentation within the servers themselves. I know how to extract that meta-data.
Therefore, aside from the global commands (which will have its own meta-data), all the completers, highlighters, parsers, commands and such must be 1) driven by the meta-data, and 2) be dynamic. That is, I would love not to have over 10MB of meta-data persistently in memory if it can be avoided.
So far, I'm either finding stupidly simple examples that would lead me to considerable hard-coding, or super-complex examples (e.g., Karaf) I'm not sure how to properly follow.
I'd love to hear recommendations on the "best" approach, so I start off on the right path. I'm not new to Java, but am completely new to JLine. Though I hard-coded a simple example, I'm miles away from my project goal.
All assistance is appreciated.
Thanks.