Server IP : 108.163.255.210 / Your IP : 18.191.171.136 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 [![build status](https://secure.travis-ci.org/veged/coa.png)](http://travis-ci.org/veged/coa) ## Что это? COA — парсер параметров командной строки, позволяющий извлечь максимум пользы от формального API вашей программы. Как только вы опишете определение в терминах команд, параметров и аргументов, вы автоматически получите: * Справку для командной строки * API для использования программы как модуля в COA-совместимых программах * Автодополнение для командной строки ### Прочие возможности * Широкий выбор настроек для параметров и аргументов, включая множественные значения, логические значения и обязательность параметров * Возможность асинхронного исполнения команд, используя промисы (используется библиотека [Q](https://github.com/kriskowal/q)) * Простота использования существующих команд как подмодулей для новых команд * Комбинированная валидация и анализ сложных значений ## Примеры ````javascript require('coa').Cmd() // декларация команды верхнего уровня .name(process.argv[1]) // имя команды верхнего уровня, берем из имени программы .title('Жутко полезная утилита для командной строки') // название для использования в справке и сообщениях .helpful() // добавляем поддержку справки командной строки (-h, --help) .opt() // добавляем параметр .name('version') // имя параметра для использования в API .title('Version') // текст для вывода в сообщениях .short('v') // короткое имя параметра: -v .long('version') // длинное имя параметра: --version .flag() // параметр не требует ввода значения .act(function(opts) { // действия при вызове аргумента // результатом является вывод текстового сообщения return JSON.parse(require('fs').readFileSync(__dirname + '/package.json')) .version; }) .end() // завершаем определение параметра и возвращаемся к определению верхнего уровня .cmd().name('subcommand').apply(require('./subcommand').COA).end() // загрузка подкоманды из модуля .cmd() // добавляем еще одну подкоманду .name('othercommand').title('Еще одна полезная подпрограмма').helpful() .opt() .name('input').title('input file, required') .short('i').long('input') .val(function(v) { // функция-валидатор, также может использоваться для трансформации значений параметров return require('fs').createReadStream(v) }) .req() // параметр является обязательным .end() // завершаем определение параметра и возвращаемся к определению команды .end() // завершаем определение подкоманды и возвращаемся к определению команды верхнего уровня .run(process.argv.slice(2)); // разбираем process.argv и запускаем ```` ````javascript // subcommand.js exports.COA = function() { this .title('Полезная подпрограмма').helpful() .opt() .name('output').title('output file') .short('o').long('output') .output() // использовать стандартную настройку для параметра вывода .end() }; ```` ## API ### Cmd Команда — сущность верхнего уровня. У команды могут быть определены параметры и аргументы. #### Cmd.api Возвращает объект, который можно использовать в других программах. Подкоманды являются методами этого объекта.<br> **@returns** *{Object}* #### Cmd.name Определяет канонический идентификатор команды, используемый в вызовах API.<br> **@param** *String* `_name` имя команды<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.title Определяет название команды, используемый в текстовых сообщениях.<br> **@param** *String* `_title` название команды<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.cmd Создает новую подкоманду или добавляет ранее определенную подкоманду к текущей команде.<br> **@param** *COA.Cmd* `[cmd]` экземпляр ранее определенной подкоманды<br> **@returns** *COA.Cmd* экземпляр новой или ранее определенной подкоманды #### Cmd.opt Создает параметр для текущей команды.<br> **@returns** *COA.Opt* `new` экземпляр параметра #### Cmd.arg Создает аргумент для текущей команды.<br> **@returns** *COA.Opt* `new` экземпляр аргумента #### Cmd.act Добавляет (или создает) действие для текущей команды.<br> **@param** *Function* `act` функция, выполняемая в контексте экземпляра текущей команды и принимающая следующие параметры:<br> - *Object* `opts` параметры команды<br> - *Array* `args` аргументы команды<br> - *Object* `res` объект-аккумулятор результатов<br> Функция может вернуть проваленный промис из Cmd.reject (в случае ошибки) или любое другое значение, рассматриваемое как результат.<br> **@param** *{Boolean}* [force=false] флаг, назначающий немедленное исполнение вместо добавления к списку существующих действий<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.apply Исполняет функцию с переданными аргументами в контексте экземпляра текущей команды.<br> **@param** *Function* `fn`<br> **@param** *Array* `args`<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.comp Назначает кастомную функцию автодополнения для текущей команды.<br> **@param** *Function* `fn` функция-генератор автодополнения, исполняемая в контексте текущей команды. Принимает параметры:<br> - *Object* `opts` параметры<br> Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.helpful Ставит флаг поддержки справки командной строки, т.е. вызов команды с параметрами -h --help выводит справку по работе с командой.<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.completable Добавляет поддержку автодополнения командной строки. Добавляется подкоманда "completion", которая выполняет все необходимые действия.<br> Может быть добавлен только для главной команды.<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.usage Возвращает текст справки по использованию команды для текущего экземпляра.<br> **@returns** *String* `usage` Текст справки по использованию #### Cmd.run Разбирает аргументы из значения, возвращаемого NodeJS process.argv, и запускает текущую программу, т.е. вызывает process.exit после завершения всех действий.<br> **@param** *Array* `argv`<br> **@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов) #### Cmd.invoke Исполняет переданную (или текущую) команду с указанными параметрами и аргументами.<br> **@param** *String|Array* `cmds` подкоманда для исполнения (необязательно)<br> **@param** *Object* `opts` параметры, передаваемые команде (необязательно)<br> **@param** *Object* `args` аргументы, передаваемые команде (необязательно)<br> **@returns** *Q.Promise* #### Cmd.reject Проваливает промисы, возращенные в действиях.<br> Используется в .act() для возврата с ошибкой.<br> **@param** *Object* `reason` причина провала<br> Вы можете определить метод toString() и свойство toString() объекта причины провала.<br> **@returns** *Q.promise* проваленный промис #### Cmd.end Завершает цепочку методов текущей подкоманды и возвращает экземпляр родительской команды.<br> **@returns** *COA.Cmd* `parent` родительская команда ### Opt Параметр — именованная сущность. У параметра может быть определено короткое или длинное имя для использования из командной строки.<br> **@namespace**<br> **@class** Переданный параметр #### Opt.name Определяет канонический идентификатор параметра, используемый в вызовах API.<br> **@param** *String* `_name` имя параметра<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.title Определяет описание для параметра, используемое в текстовых сообщениях.<br> **@param** *String* `_title` название параметра<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.short Назначает ключ для короткого имени параметра, передаваемого из командной строки с одинарным дефисом (например, `-v`).<br> **@param** *String* `_short`<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.long Назначает ключ для длинного имени параметра, передаваемого из командной строки с двойным дефисом (например, `--version`).<br> **@param** *String* `_long`<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.flag Помечает параметр как логический, т.е. параметр не имеющий значения.<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.arr Помечает параметр как принимающий множественные значения.<br> Иначе будет использовано последнее переданное значение параметра.<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.req Помечает параметр как обязательный.<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.only Интерпретирует параметр как команду, т.е. программа будет завершена сразу после выполнения параметра.<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.val Назначает функцию валидации (или трансформации значения) для значения параметра.<br> Значение, полученное из командной строки, передается в функцию-валидатор прежде чем оно станет доступно из API.<br> Используется для валидации и трансформации введенных данных.<br> **@param** *Function* `_val` функция валидации, исполняемая в контексте экземпляра параметра и принимающая в качестве единственного параметра значение, полученное из командной строки<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.def Назначает значение параметра по умолчанию. Это значение также передается в функцию валидации как обычное значение.<br> **@param** *Object* `_def`<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.input Помечает параметр как принимающий ввод пользователя. <br> Позволяет использовать валидацию для STDIN.<br> **@returns** *{COA.Opt}* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.output Помечает параметр как вывод.<br> Позволяет использовать валидацию для STDOUT.<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.act Добавляет (или создает) действие для текущего параметра команды. Это действие будет выполнено, если текущий параметр есть в списке полученных параметров (с любым значением).<br> **@param** *Function* `act` функция, выполняемая в контексте экземпляра текущей команды и принимающая следующие параметры:<br> - *Object* `opts` параметры команды<br> - *Array* `args` аргументы команды<br> - *Object* `res` объект-аккумулятор результатов<br> Функция может вернуть проваленный промис из Cmd.reject (в случае ошибки) или любое другое значение, рассматриваемое как результат.<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.comp Назначает кастомную функцию автодополнения для текущей команды.<br> **@param** *Function* `fn` функция-генератор автодоплнения, исполняемая в контексте экземпляра команды. Принимает параметры:<br> - *Object* `opts` параметры автодополнения<br> Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.<br> **@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов) #### Opt.end Завершает цепочку методов текущего параметра и возвращает экземпляр родительской команды.<br> **@returns** *COA.Cmd* `parent` родительская команда ### Arg Аргумент — неименованная сущность.<br> Аргументы передаются из командной строки как список неименованных значений. #### Arg.name Определяет канонический идентификатор аргумента, используемый в вызовах API.<br> **@param** *String* `_name` имя аргумента<br> **@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.title Определяет описание для аргумента, используемое в текстовых сообщениях.<br> **@param** *String* `_title` описание аргумента<br> **@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.arr Помечает аргумент как принимающий множественные значения.<br> Иначе будет использовано последнее переданное значение аргумента.<br> **@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.req Помечает аргумент как обязательный.<br> **@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.val Назначает функцию валидации (или трансформации значения) для аргумента.<br> Значение, полученное из командной строки, передается в функцию-валидатор прежде чем оно станет доступно из API.<br> Используется для валидации и трансформации введенных данных.<br> **@param** *Function* `_val` функция валидации, исполняемая в контексте экземпляра аргумента и принимающая в качестве единственного параметра значение, полученное из командной строки<br> **@returns** *COA.Opt* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.def Назначает дефолтное значение для аргумента. Дефолтное значение передается в функцию валидации как обычное значение.<br> **@param** *Object* `_def`<br> **@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.output Помечает параметр как вывод.<br> Позволяет назначить валидацию для STDOUT.<br> **@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.comp Назначает кастомную функцию автодополнения для текущего аргумента.<br> **@param** *Function* `fn` функция-генератор автодоплнения, исполняемая в контексте текущей команды. Принимает параметры:<br> - *Object* `opts` параметры Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.<br> **@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов) #### Arg.end Завершает цепочку методов текущего аргумента и возвращает экземпляр родительской команды.<br> **@returns** *COA.Cmd* `parent` родительская команда