Clad User Manual: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 7: Line 7:
The framework scans the command line looking for the first argument that can be mapped to a command.  
The framework scans the command line looking for the first argument that can be mapped to a command.  


The mapping process involves scanning the classpath and looking for classes implementing the [https://github.com/NovaOrdis/clad/blob/master/src/main/java/io/novaordis/clad/command/Command.java Command interface]. The current version does not introspect all classes, but just those whose simple class name match the following pattern: <tt><commandName>Command</tt>.  
The mapping process involves scanning the classpath and looking for classes implementing the [https://github.com/NovaOrdis/clad/blob/master/src/main/java/io/novaordis/clad/command/Command.java Command interface]. The current version does not introspect all classes, but just those whose simple class name match the following pattern: <tt><commandName>Command</tt>. All arguments between the wrapper name and the command name are interpreted as global options. All arguments following the command name are interpreted as command options.
 
All arguments between the wrapper name and the command name are interpreted as global options.
 
All arguments following the command name are interpreted as command options.


<pre>
<pre>
 
wrapper [global-options] command [command-options]
  wrapper [global-options] command [command-options]
 
</pre>
</pre>


Line 25: Line 19:
:[[clad User Manual - How to Implement a Command Line Application|How to Implement a Command Line Application]]
:[[clad User Manual - How to Implement a Command Line Application|How to Implement a Command Line Application]]
</blockquote>
</blockquote>
==In-line Application Help==
If a text file named <tt><application-name>.txt</tt> is placed in the same package as the <tt>ApplicationRuntime</tt> implementation class, its content is rendered to <tt>stdout</tt> every time the in-line application help is invoked with no-argument "help" command:
<pre>
  <app-name> help|--help|-h
</pre>
The length of a text line should not be larger than 99.
===Macros===
The help renderer recognizes several macros, which are replaced by dynamically generated content at runtime.
@COMMANDS@ - inserts the list of commands available to the application. The runtime builds that list via introspection looking for classes that implement the Command interface.

Latest revision as of 18:17, 8 November 2016

Internal

Overview

The framework scans the command line looking for the first argument that can be mapped to a command.

The mapping process involves scanning the classpath and looking for classes implementing the Command interface. The current version does not introspect all classes, but just those whose simple class name match the following pattern: <commandName>Command. All arguments between the wrapper name and the command name are interpreted as global options. All arguments following the command name are interpreted as command options.

wrapper [global-options] command [command-options]

Subjects

Concepts
How to Implement a Command Line Application