The most usable command line interface I've ever seen is on the
AS/400. If you need help with a command, you type the command and hit
the help key. Then you are presented with a form showing all the
arguments and default values. So the help is right there where you
need it as you fill out a form for the command.
The AS/400 has the advantage that they have full control over the
terminal and you can easily lay out these forms when needed. However,
for our CLI, we could have a "prompt me" mode that prompts for each
argument, showing default values and explanations along the way.
[localhost:9999 /] promptme deploy
local file? /foo.war
server deployable name (foo.war)? my_war_name.war
runtime name (my_war_name.war)? my_war_runtime.war
deploy to servergroup1 (yes)?
deploy to servergroup2 (yes)? no
**result: foo.war was uploaded to domain and deployed to servergroup1
[localhost:9999 /]
Quoting Alexey Loubyansky <alexey.loubyansky(a)redhat.com>:
On 04/19/2011 04:29 PM, David M. Lloyd wrote:
> On 04/19/2011 08:31 AM, Alexey Loubyansky wrote:
>>
>> In addition, it's kind of a proprietary convention. We discussed this
>> with Max today and I'm looking into the GNU convention for command line
>> arguments
>
> That is a common convention -- for command line arguments. For
> interactive command lines (examples I'm thinking of include 3com and
> Cisco network management CLIs, as well as commands such as linux's
"ip"
> command which have widely variable arguments), usually it's more like:
>
> create-jms-cf name mycf entries foo bar baz
Here is the full version
[localhost:9999 /] create-jms-cf
--help name=
auto-group=
entries= connector=
block-on-acknowledge=
block-on-durable-send= block-on-non-durable-send=
cache-large-message-client=
call-timeout= client-failure-check-period=
client-id=
confirmation-window-size= connection-ttl=
consumer-max-rate=
consumer-window-size= discovery-group-name=
dups-ok-batch-size=
failover-on-initial-connection= failover-on-server-shutdown=
group-id=
max-retry-interval= min-large-message-size=
pre-acknowledge=
producer-max-rate= producer-window-size=
reconnect-attempts=
retry-interval= retry-interval-multiplier=
scheduled-thread-pool-max-size=
thread-pool-max-size= transaction-batch-size=
use-global-pools=
> Of course this falls apart for "deploy" unless you do something like this:
>
> deploy file mything.war as myblah.war runtime-name yourblah.war
>
> or something (i.e. make it somewhat more fluent and less shell-ish).
Ok, so you'd actually prefer a simplicity instead of a standard convention.
I'll think about it (and if somebody has suggestions, please, share) but
if that doesn't work out we'll have to choose an existing convention.
>> And another point is the use of '='. Some command lines don't use it,
e.g.
>>
>> deploy --file my.war --name my_war_name.war --runtime-name
>> my_war_runtime_name.war
>>
>> and some do
>>
>> deploy --file=my.war --name=my_war_name.war
>> --runtime-name=my_war_runtime_name.war
>
> And some command lines support both :)
That's too messy, IMO.
Thanks,
Alexey
_______________________________________________
jboss-as7-dev mailing list
jboss-as7-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-as7-dev