Extending cla wth commands
It's posible to write programs that extend the cla
command with new functionality and leverages on the Clarive
Platform for accessing agents, configuration items, and other functionality.
cla mycommand --myoptions
Getting started¶
By running the cla
command, the list of available commands are listed.
$ cla Clarive - Copyright(C) 2010-2016 Commitive, SL usage: cla [-h] [-v] [--config file] command <command-args> Commands available: <service.*> run services config config & options inherited, config file generator db database diff and deploy tool disp Start/Stop dispatcher docs Manage the Clarive Documentation help This help init system Initialization lic license verification migra run migrations plugin plugin utilities poll monitoring tool profile print default profile ps list server processes queue queue management tools replay Replay setup run setup profile smoke smoke tests start start all server tasks stop stop all server tasks trans conversion tool, password encryption version report our version web Start/Stop web server ws webservices toolchain cla help <command> to get all subcommands. cla <command> -h for command options.
Adding new commands is done from within a plugin.
To create a new plugin, in case you don't have one already, run the plugin-bootstrap
command:
cla plugin-new --plugin myplugin
Now create a command file, let's say we want to create the mycmd
command, this would be the appropriate file:
CLARIVE_BASE/plugins/myplugin/cmd/mycmd.js
A command program is just a plain JS program:
print("Hello World");
Full command configuration¶
Although command-line options are available, the correct way to access the command configuration is by calling
process.options(key)
, which retrieves the correct configuration value from a merged, comprehensive object, which
includes:
- the global config YAML file
- the config YAML file (set with
-c
) - the command section within the configuration file
- finally, the command line argument flags
Precedence goes from bottom to top.
The process.options(key)
function accesses the merged
options stack.
print( process.options('mongo.db_name') );
Command Arguments¶
The command-line arguments is sent to the program through the process
variable:
console.log( process.argv() );
You can also access the individual options as an object, which is actually much easier to manipulate than going though
the argv
array.
var myoption = process.args('myoption'); print( "User entered --myoption=" + myoption );