Server IP : 108.163.255.210 / Your IP : 3.144.6.9 Web Server : Apache System : Linux blossom.urlnameserver.com 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 User : ( 1172) PHP Version : 7.2.34 Disable Function : eval,escapeshellarg,proc_close,proc_get_status,proc_nice,proc_open,symlink,system,pcntl_exec,getrusage,chown,chgp,closelog,openlog,syslog,define_syslog_variables,php_ini_loaded_file,getservbyname,getservbyport,posix_getgid,posix_getgrgid,proc_terminate,pfsockopen,apache_child_terminate,posix_mkfifo,posix_setpgid,posix_setuid,hypot,pg_host,pos,posix_access,posix_getcwd,posix_getservbyname,myshellexec,getpid,posix_getsid,posix_isatty,posix_kill,posix_mknod,posix_setgid,posix_setsid,posix_setuid,posix_times,posix_uname,ps_fill,posix_getpwuid,global,ini_restore,zip_open,zip_read,rar_open,bzopen,bzread,bzwrite,apache_get_modules,apache_get_version,phpversionphpinfo,php_ini_scanned_files,get_current_user,disk_total_space,diskfreespace,leak,imap_list,hypo,filedump,safe_mode,getmygid,apache_getenv,apache_setenv,bzread,bzwrite,bzopen,phpini,higlight_file,dos_conv,get_cwd,er_log,cmd,e_name,vdir,get_dir,only_read,ftok,ftpexec,posix_getpwnam,mysql_list_dbs,disk_free_space,session_save_path,confirm_phpdoc_compiled,zip_entry_rea,php_u,psockopen,crack_opendict,crack_getlastmessage,crack_closedict,crack_check,fpassthru,posix_get_last_error,posix_getlogin,posix_getgroups,posix_strerror,posix_getrlimit,posix_getpgrp,posix_getgrnam,pos,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/unilinki/public_html/indijourneys.com/node_modules/coa/ |
Upload File : |
# Command-Option-Argument Yet another parser for command line options. [![NPM Status][npm-img]][npm] [![Travis Status][test-img]][travis] [![AppVeyor Status][appveyor-img]][appveyor] [![Coverage Status][coverage-img]][coveralls] [![Dependency Status][dependency-img]][david] [npm]: https://www.npmjs.org/package/coa [npm-img]: https://img.shields.io/npm/v/coa.svg [travis]: https://travis-ci.org/veged/coa [test-img]: https://img.shields.io/travis/veged/coa.svg [appveyor]: https://ci.appveyor.com/project/zxqfox/coa [appveyor-img]: https://ci.appveyor.com/api/projects/status/github/veged/coa?svg=true [coveralls]: https://coveralls.io/r/veged/coa [coverage-img]: https://img.shields.io/coveralls/veged/coa.svg [david]: https://david-dm.org/veged/coa [dependency-img]: http://img.shields.io/david/veged/coa.svg ## What is it? COA is a parser for command line options that aim to get maximum profit from formalization your program API. Once you write definition in terms of commands, options and arguments you automaticaly get: * Command line help text * Program API for use COA-based programs as modules * Shell completion ### Other features * Rich types for options and arguments, such as arrays, boolean flags and required * Commands can be async throught using promising (powered by [Q](https://github.com/kriskowal/q)) * Easy submoduling some existing commands to new top-level one * Combined validation and complex parsing of values ### TODO * Localization * Shell-mode * Configs * Aliases * Defaults ## Examples ````javascript require('coa').Cmd() // main (top level) command declaration .name(process.argv[1]) // set top level command name from program name .title('My awesome command line util') // title for use in text messages .helpful() // make command "helpful", i.e. options -h --help with usage message .opt() // add some option .name('version') // name for use in API .title('Version') // title for use in text messages .short('v') // short key: -v .long('version') // long key: --version .flag() // for options without value .act(function(opts) { // add action for option // return message as result of action return JSON.parse(require('fs').readFileSync(__dirname + '/package.json')) .version; }) .end() // end option chain and return to main command .cmd().name('subcommand').apply(require('./subcommand').COA).end() // load subcommand from module .cmd() // inplace subcommand declaration .name('othercommand').title('Awesome other subcommand').helpful() .opt() .name('input').title('input file, required') .short('i').long('input') .val(function(v) { // validator function, also for translate simple values return require('fs').createReadStream(v) }) .req() // make option required .end() // end option chain and return to command .end() // end subcommand chain and return to parent command .run(process.argv.slice(2)); // parse and run on process.argv ```` ````javascript // subcommand.js exports.COA = function() { this .title('Awesome subcommand').helpful() .opt() .name('output').title('output file') .short('o').long('output') .output() // use default preset for "output" option declaration .end() }; ```` ## API reference ### Cmd Command is a top level entity. Commands may have options and arguments. #### Cmd.api Returns object containing all its subcommands as methods to use from other programs.<br> **@returns** *{Object}* #### Cmd.name Set a canonical command identifier to be used anywhere in the API.<br> **@param** *String* `_name` command name<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.title Set a long description for command to be used anywhere in text messages.<br> **@param** *String* `_title` command title<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.cmd Create new or add existing subcommand for current command.<br> **@param** *COA.Cmd* `[cmd]` existing command instance<br> **@returns** *COA.Cmd* new or added subcommand instance #### Cmd.opt Create option for current command.<br> **@returns** *COA.Opt* `new` option instance #### Cmd.arg Create argument for current command.<br> **@returns** *COA.Opt* `new` argument instance #### Cmd.act Add (or set) action for current command.<br> **@param** *Function* `act` action function, invoked in the context of command instance and has the parameters:<br> - *Object* `opts` parsed options<br> - *Array* `args` parsed arguments<br> - *Object* `res` actions result accumulator<br> It can return rejected promise by Cmd.reject (in case of error) or any other value treated as result.<br> **@param** *{Boolean}* [force=false] flag for set action instead add to existings<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.apply Apply function with arguments in context of command instance.<br> **@param** *Function* `fn`<br> **@param** *Array* `args`<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.comp Set custom additional completion for current command.<br> **@param** *Function* `fn` completion generation function, invoked in the context of command instance. Accepts parameters:<br> - *Object* `opts` completion options<br> It can return promise or any other value treated as result.<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.helpful Make command "helpful", i.e. add -h --help flags for print usage.<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.completable Adds shell completion to command, adds "completion" subcommand, that makes all the magic.<br> Must be called only on root command.<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.usage Build full usage text for current command instance.<br> **@returns** *String* `usage` text #### Cmd.run Parse arguments from simple format like NodeJS process.argv and run ahead current program, i.e. call process.exit when all actions done.<br> **@param** *Array* `argv`<br> **@returns** *COA.Cmd* `this` instance (for chainability) #### Cmd.invoke Invoke specified (or current) command using provided options and arguments.<br> **@param** *String|Array* `cmds` subcommand to invoke (optional)<br> **@param** *Object* `opts` command options (optional)<br> **@param** *Object* `args` command arguments (optional)<br> **@returns** *Q.Promise* #### Cmd.reject Return reject of actions results promise.<br> Use in .act() for return with error.<br> **@param** *Object* `reason` reject reason<br> You can customize toString() method and exitCode property of reason object.<br> **@returns** *Q.promise* rejected promise #### Cmd.end Finish chain for current subcommand and return parent command instance.<br> **@returns** *COA.Cmd* `parent` command ### Opt Option is a named entity. Options may have short and long keys for use from command line.<br> **@namespace**<br> **@class** Presents option #### Opt.name Set a canonical option identifier to be used anywhere in the API.<br> **@param** *String* `_name` option name<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.title Set a long description for option to be used anywhere in text messages.<br> **@param** *String* `_title` option title<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.short Set a short key for option to be used with one hyphen from command line.<br> **@param** *String* `_short`<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.long Set a short key for option to be used with double hyphens from command line.<br> **@param** *String* `_long`<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.flag Make an option boolean, i.e. option without value.<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.arr Makes an option accepts multiple values.<br> Otherwise, the value will be used by the latter passed.<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.req Makes an option req.<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.only Makes an option to act as a command, i.e. program will exit just after option action.<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.val Set a validation (or value) function for argument.<br> Value from command line passes through before becoming available from API.<br> Using for validation and convertion simple types to any values.<br> **@param** *Function* `_val` validating function, invoked in the context of option instance and has one parameter with value from command line<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.def Set a default value for option. Default value passed through validation function as ordinary value.<br> **@param** *Object* `_def`<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.input Make option value inputting stream. It's add useful validation and shortcut for STDIN. **@returns** *{COA.Opt}* `this` instance (for chainability) #### Opt.output Make option value outputing stream.<br> It's add useful validation and shortcut for STDOUT.<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.act Add action for current option command. This action is performed if the current option is present in parsed options (with any value).<br> **@param** *Function* `act` action function, invoked in the context of command instance and has the parameters:<br> - *Object* `opts` parsed options<br> - *Array* `args` parsed arguments<br> - *Object* `res` actions result accumulator<br> It can return rejected promise by Cmd.reject (in case of error) or any other value treated as result.<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.comp Set custom additional completion for current option.<br> **@param** *Function* `fn` completion generation function, invoked in the context of command instance. Accepts parameters:<br> - *Object* `opts` completion options<br> It can return promise or any other value treated as result.<br> **@returns** *COA.Opt* `this` instance (for chainability) #### Opt.end Finish chain for current option and return parent command instance.<br> **@returns** *COA.Cmd* `parent` command ### Arg Argument is a unnamed entity.<br> From command line arguments passed as list of unnamed values. #### Arg.name Set a canonical argument identifier to be used anywhere in text messages.<br> **@param** *String* `_name` argument name<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.title Set a long description for argument to be used anywhere in text messages.<br> **@param** *String* `_title` argument title<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.arr Makes an argument accepts multiple values.<br> Otherwise, the value will be used by the latter passed.<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.req Makes an argument req.<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.val Set a validation (or value) function for argument.<br> Value from command line passes through before becoming available from API.<br> Using for validation and convertion simple types to any values.<br> **@param** *Function* `_val` validating function, invoked in the context of argument instance and has one parameter with value from command line<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.def Set a default value for argument. Default value passed through validation function as ordinary value.<br> **@param** *Object* `_def`<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.output Make argument value outputing stream.<br> It's add useful validation and shortcut for STDOUT.<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.comp Set custom additional completion for current argument.<br> **@param** *Function* `fn` completion generation function, invoked in the context of command instance. Accepts parameters:<br> - *Object* `opts` completion options<br> It can return promise or any other value treated as result.<br> **@returns** *COA.Arg* `this` instance (for chainability) #### Arg.end Finish chain for current option and return parent command instance.<br> **@returns** *COA.Cmd* `parent` command