coa 0.4.1 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +21 -0
- package/README.md +28 -33
- package/README.ru.md +316 -0
- package/index.js +1 -1
- package/lib/arg.js +44 -161
- package/lib/cmd.js +434 -547
- package/lib/coaobject.js +100 -0
- package/lib/coaparam.js +125 -0
- package/lib/color.js +19 -22
- package/lib/completion.js +161 -119
- package/lib/index.js +14 -10
- package/lib/opt.js +130 -313
- package/lib/shell.js +13 -13
- package/package.json +21 -17
- package/.npmignore +0 -6
- package/.travis.yml +0 -11
- package/GNUmakefile +0 -34
- package/src/arg.coffee +0 -130
- package/src/cmd.coffee +0 -456
- package/src/color.coffee +0 -25
- package/src/completion.coffee +0 -158
- package/src/index.coffee +0 -5
- package/src/opt.coffee +0 -243
- package/src/shell.coffee +0 -10
- package/test/coa.js +0 -496
- package/test/common.js +0 -1
- package/test/mocha.opts +0 -3
- package/test/shell-test.js +0 -60
- package/tests/api-h.js +0 -9
- package/tests/h.js +0 -6
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015-present Sergey Berezhnoy <veged@ya.ru>
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Command-Option-Argument
|
2
|
-
|
2
|
+
|
3
|
+
Yet another parser for command line options.
|
4
|
+
|
5
|
+
[![NPM Status][npm-img]][npm]
|
6
|
+
[![Travis Status][test-img]][travis]
|
7
|
+
[![AppVeyor Status][appveyor-img]][appveyor]
|
8
|
+
[![Coverage Status][coverage-img]][coveralls]
|
9
|
+
[![Dependency Status][dependency-img]][david]
|
10
|
+
|
11
|
+
[npm]: https://www.npmjs.org/package/coa
|
12
|
+
[npm-img]: https://img.shields.io/npm/v/coa.svg
|
13
|
+
[travis]: https://travis-ci.org/veged/coa
|
14
|
+
[test-img]: https://img.shields.io/travis/veged/coa.svg
|
15
|
+
[appveyor]: https://ci.appveyor.com/project/zxqfox/coa
|
16
|
+
[appveyor-img]: https://ci.appveyor.com/api/projects/status/github/veged/coa?svg=true
|
17
|
+
[coveralls]: https://coveralls.io/r/veged/coa
|
18
|
+
[coverage-img]: https://img.shields.io/coveralls/veged/coa.svg
|
19
|
+
[david]: https://david-dm.org/veged/coa
|
20
|
+
[dependency-img]: http://img.shields.io/david/veged/coa.svg
|
3
21
|
|
4
22
|
## What is it?
|
5
23
|
|
@@ -9,7 +27,6 @@ Once you write definition in terms of commands, options and arguments you automa
|
|
9
27
|
* Command line help text
|
10
28
|
* Program API for use COA-based programs as modules
|
11
29
|
* Shell completion
|
12
|
-
* Subcommand extendibility by external node modules
|
13
30
|
|
14
31
|
### Other features
|
15
32
|
|
@@ -20,8 +37,6 @@ Once you write definition in terms of commands, options and arguments you automa
|
|
20
37
|
|
21
38
|
### TODO
|
22
39
|
|
23
|
-
* --Subcommand extendibility--
|
24
|
-
* Shell completion helpers
|
25
40
|
* Localization
|
26
41
|
* Shell-mode
|
27
42
|
* Configs
|
@@ -47,22 +62,14 @@ require('coa').Cmd() // main (top level) command declaration
|
|
47
62
|
.version;
|
48
63
|
})
|
49
64
|
.end() // end option chain and return to main command
|
50
|
-
.cmd()
|
51
|
-
.name('subcommand')
|
52
|
-
.apply(require('./subcommand')) // load subcommand from module
|
53
|
-
.end()
|
65
|
+
.cmd().name('subcommand').apply(require('./subcommand').COA).end() // load subcommand from module
|
54
66
|
.cmd() // inplace subcommand declaration
|
55
|
-
.name('othercommand')
|
56
|
-
.title('Awesome other subcommand')
|
57
|
-
.helpful()
|
67
|
+
.name('othercommand').title('Awesome other subcommand').helpful()
|
58
68
|
.opt()
|
59
|
-
.name('input')
|
60
|
-
.
|
61
|
-
.short('i')
|
62
|
-
.long('input')
|
69
|
+
.name('input').title('input file, required')
|
70
|
+
.short('i').long('input')
|
63
71
|
.val(function(v) { // validator function, also for translate simple values
|
64
|
-
return require('fs').createReadStream(v)
|
65
|
-
})
|
72
|
+
return require('fs').createReadStream(v) })
|
66
73
|
.req() // make option required
|
67
74
|
.end() // end option chain and return to command
|
68
75
|
.end() // end subcommand chain and return to parent command
|
@@ -71,14 +78,12 @@ require('coa').Cmd() // main (top level) command declaration
|
|
71
78
|
|
72
79
|
````javascript
|
73
80
|
// subcommand.js
|
74
|
-
|
81
|
+
exports.COA = function() {
|
75
82
|
this
|
76
83
|
.title('Awesome subcommand').helpful()
|
77
84
|
.opt()
|
78
|
-
.name('output')
|
79
|
-
.
|
80
|
-
.short('o')
|
81
|
-
.long('output')
|
85
|
+
.name('output').title('output file')
|
86
|
+
.short('o').long('output')
|
82
87
|
.output() // use default preset for "output" option declaration
|
83
88
|
.end()
|
84
89
|
};
|
@@ -153,16 +158,6 @@ Adds shell completion to command, adds "completion" subcommand, that makes all t
|
|
153
158
|
Must be called only on root command.<br>
|
154
159
|
**@returns** *COA.Cmd* `this` instance (for chainability)
|
155
160
|
|
156
|
-
#### Cmd.extendable
|
157
|
-
Adds ability to extend command by external node modules.<br>
|
158
|
-
**@param** *String* `[pattern]` Pattern of modules names to search.
|
159
|
-
Should be simple string with `%s` placeholder like `coa-program-%s-subcommand`
|
160
|
-
or without it — it will be treated as module name prefix then. E.g. `coa-program-`.<br>
|
161
|
-
Node module should export function or `Cmd` object. Function will be passed
|
162
|
-
to `Cmd.apply()` method of created subcommand object using `Cmd.cmd()` method. And
|
163
|
-
`Cmd` object will be passed to `Cmd.cmd()` method.
|
164
|
-
**@returns** *COA.Cmd* `this` instance (for chainability)
|
165
|
-
|
166
161
|
#### Cmd.usage
|
167
162
|
Build full usage text for current command instance.<br>
|
168
163
|
**@returns** *String* `usage` text
|
@@ -331,7 +326,7 @@ Make argument value outputing stream.<br>
|
|
331
326
|
It's add useful validation and shortcut for STDOUT.<br>
|
332
327
|
**@returns** *COA.Arg* `this` instance (for chainability)
|
333
328
|
|
334
|
-
####
|
329
|
+
#### Arg.comp
|
335
330
|
Set custom additional completion for current argument.<br>
|
336
331
|
**@param** *Function* `fn` completion generation function,
|
337
332
|
invoked in the context of command instance.
|
package/README.ru.md
ADDED
@@ -0,0 +1,316 @@
|
|
1
|
+
# Command-Option-Argument
|
2
|
+
[![build status](https://secure.travis-ci.org/veged/coa.png)](http://travis-ci.org/veged/coa)
|
3
|
+
|
4
|
+
## Что это?
|
5
|
+
|
6
|
+
COA — парсер параметров командной строки, позволяющий извлечь максимум пользы от формального API вашей программы.
|
7
|
+
Как только вы опишете определение в терминах команд, параметров и аргументов, вы автоматически получите:
|
8
|
+
|
9
|
+
* Справку для командной строки
|
10
|
+
* API для использования программы как модуля в COA-совместимых программах
|
11
|
+
* Автодополнение для командной строки
|
12
|
+
|
13
|
+
### Прочие возможности
|
14
|
+
|
15
|
+
* Широкий выбор настроек для параметров и аргументов, включая множественные значения, логические значения и обязательность параметров
|
16
|
+
* Возможность асинхронного исполнения команд, используя промисы (используется библиотека [Q](https://github.com/kriskowal/q))
|
17
|
+
* Простота использования существующих команд как подмодулей для новых команд
|
18
|
+
* Комбинированная валидация и анализ сложных значений
|
19
|
+
|
20
|
+
## Примеры
|
21
|
+
|
22
|
+
````javascript
|
23
|
+
require('coa').Cmd() // декларация команды верхнего уровня
|
24
|
+
.name(process.argv[1]) // имя команды верхнего уровня, берем из имени программы
|
25
|
+
.title('Жутко полезная утилита для командной строки') // название для использования в справке и сообщениях
|
26
|
+
.helpful() // добавляем поддержку справки командной строки (-h, --help)
|
27
|
+
.opt() // добавляем параметр
|
28
|
+
.name('version') // имя параметра для использования в API
|
29
|
+
.title('Version') // текст для вывода в сообщениях
|
30
|
+
.short('v') // короткое имя параметра: -v
|
31
|
+
.long('version') // длинное имя параметра: --version
|
32
|
+
.flag() // параметр не требует ввода значения
|
33
|
+
.act(function(opts) { // действия при вызове аргумента
|
34
|
+
// результатом является вывод текстового сообщения
|
35
|
+
return JSON.parse(require('fs').readFileSync(__dirname + '/package.json'))
|
36
|
+
.version;
|
37
|
+
})
|
38
|
+
.end() // завершаем определение параметра и возвращаемся к определению верхнего уровня
|
39
|
+
.cmd().name('subcommand').apply(require('./subcommand').COA).end() // загрузка подкоманды из модуля
|
40
|
+
.cmd() // добавляем еще одну подкоманду
|
41
|
+
.name('othercommand').title('Еще одна полезная подпрограмма').helpful()
|
42
|
+
.opt()
|
43
|
+
.name('input').title('input file, required')
|
44
|
+
.short('i').long('input')
|
45
|
+
.val(function(v) { // функция-валидатор, также может использоваться для трансформации значений параметров
|
46
|
+
return require('fs').createReadStream(v) })
|
47
|
+
.req() // параметр является обязательным
|
48
|
+
.end() // завершаем определение параметра и возвращаемся к определению команды
|
49
|
+
.end() // завершаем определение подкоманды и возвращаемся к определению команды верхнего уровня
|
50
|
+
.run(process.argv.slice(2)); // разбираем process.argv и запускаем
|
51
|
+
````
|
52
|
+
|
53
|
+
````javascript
|
54
|
+
// subcommand.js
|
55
|
+
exports.COA = function() {
|
56
|
+
this
|
57
|
+
.title('Полезная подпрограмма').helpful()
|
58
|
+
.opt()
|
59
|
+
.name('output').title('output file')
|
60
|
+
.short('o').long('output')
|
61
|
+
.output() // использовать стандартную настройку для параметра вывода
|
62
|
+
.end()
|
63
|
+
};
|
64
|
+
````
|
65
|
+
|
66
|
+
## API
|
67
|
+
|
68
|
+
### Cmd
|
69
|
+
Команда — сущность верхнего уровня. У команды могут быть определены параметры и аргументы.
|
70
|
+
|
71
|
+
#### Cmd.api
|
72
|
+
Возвращает объект, который можно использовать в других программах. Подкоманды являются методами этого объекта.<br>
|
73
|
+
**@returns** *{Object}*
|
74
|
+
|
75
|
+
#### Cmd.name
|
76
|
+
Определяет канонический идентификатор команды, используемый в вызовах API.<br>
|
77
|
+
**@param** *String* `_name` имя команды<br>
|
78
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
79
|
+
|
80
|
+
#### Cmd.title
|
81
|
+
Определяет название команды, используемый в текстовых сообщениях.<br>
|
82
|
+
**@param** *String* `_title` название команды<br>
|
83
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
84
|
+
|
85
|
+
#### Cmd.cmd
|
86
|
+
Создает новую подкоманду или добавляет ранее определенную подкоманду к текущей команде.<br>
|
87
|
+
**@param** *COA.Cmd* `[cmd]` экземпляр ранее определенной подкоманды<br>
|
88
|
+
**@returns** *COA.Cmd* экземпляр новой или ранее определенной подкоманды
|
89
|
+
|
90
|
+
#### Cmd.opt
|
91
|
+
Создает параметр для текущей команды.<br>
|
92
|
+
**@returns** *COA.Opt* `new` экземпляр параметра
|
93
|
+
|
94
|
+
#### Cmd.arg
|
95
|
+
Создает аргумент для текущей команды.<br>
|
96
|
+
**@returns** *COA.Opt* `new` экземпляр аргумента
|
97
|
+
|
98
|
+
#### Cmd.act
|
99
|
+
Добавляет (или создает) действие для текущей команды.<br>
|
100
|
+
**@param** *Function* `act` функция,
|
101
|
+
выполняемая в контексте экземпляра текущей команды
|
102
|
+
и принимающая следующие параметры:<br>
|
103
|
+
- *Object* `opts` параметры команды<br>
|
104
|
+
- *Array* `args` аргументы команды<br>
|
105
|
+
- *Object* `res` объект-аккумулятор результатов<br>
|
106
|
+
Функция может вернуть проваленный промис из Cmd.reject (в случае ошибки)
|
107
|
+
или любое другое значение, рассматриваемое как результат.<br>
|
108
|
+
**@param** *{Boolean}* [force=false] флаг, назначающий немедленное исполнение вместо добавления к списку существующих действий<br>
|
109
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
110
|
+
|
111
|
+
#### Cmd.apply
|
112
|
+
Исполняет функцию с переданными аргументами в контексте экземпляра текущей команды.<br>
|
113
|
+
**@param** *Function* `fn`<br>
|
114
|
+
**@param** *Array* `args`<br>
|
115
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
116
|
+
|
117
|
+
#### Cmd.comp
|
118
|
+
Назначает кастомную функцию автодополнения для текущей команды.<br>
|
119
|
+
**@param** *Function* `fn` функция-генератор автодополнения,
|
120
|
+
исполняемая в контексте текущей команды.
|
121
|
+
Принимает параметры:<br>
|
122
|
+
- *Object* `opts` параметры<br>
|
123
|
+
Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.<br>
|
124
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
125
|
+
|
126
|
+
#### Cmd.helpful
|
127
|
+
Ставит флаг поддержки справки командной строки, т.е. вызов команды с параметрами -h --help выводит справку по работе с командой.<br>
|
128
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
129
|
+
|
130
|
+
#### Cmd.completable
|
131
|
+
Добавляет поддержку автодополнения командной строки. Добавляется подкоманда "completion", которая выполняет все необходимые действия.<br>
|
132
|
+
Может быть добавлен только для главной команды.<br>
|
133
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
134
|
+
|
135
|
+
#### Cmd.usage
|
136
|
+
Возвращает текст справки по использованию команды для текущего экземпляра.<br>
|
137
|
+
**@returns** *String* `usage` Текст справки по использованию
|
138
|
+
|
139
|
+
#### Cmd.run
|
140
|
+
Разбирает аргументы из значения, возвращаемого NodeJS process.argv,
|
141
|
+
и запускает текущую программу, т.е. вызывает process.exit после завершения
|
142
|
+
всех действий.<br>
|
143
|
+
**@param** *Array* `argv`<br>
|
144
|
+
**@returns** *COA.Cmd* `this` экземпляр команды (для поддержки цепочки методов)
|
145
|
+
|
146
|
+
#### Cmd.invoke
|
147
|
+
Исполняет переданную (или текущую) команду с указанными параметрами и аргументами.<br>
|
148
|
+
**@param** *String|Array* `cmds` подкоманда для исполнения (необязательно)<br>
|
149
|
+
**@param** *Object* `opts` параметры, передаваемые команде (необязательно)<br>
|
150
|
+
**@param** *Object* `args` аргументы, передаваемые команде (необязательно)<br>
|
151
|
+
**@returns** *Q.Promise*
|
152
|
+
|
153
|
+
#### Cmd.reject
|
154
|
+
Проваливает промисы, возращенные в действиях.<br>
|
155
|
+
Используется в .act() для возврата с ошибкой.<br>
|
156
|
+
**@param** *Object* `reason` причина провала<br>
|
157
|
+
Вы можете определить метод toString() и свойство toString()
|
158
|
+
объекта причины провала.<br>
|
159
|
+
**@returns** *Q.promise* проваленный промис
|
160
|
+
|
161
|
+
#### Cmd.end
|
162
|
+
Завершает цепочку методов текущей подкоманды и возвращает экземпляр родительской команды.<br>
|
163
|
+
**@returns** *COA.Cmd* `parent` родительская команда
|
164
|
+
|
165
|
+
### Opt
|
166
|
+
Параметр — именованная сущность. У параметра может быть определено короткое или длинное имя для использования из командной строки.<br>
|
167
|
+
**@namespace**<br>
|
168
|
+
**@class** Переданный параметр
|
169
|
+
|
170
|
+
#### Opt.name
|
171
|
+
Определяет канонический идентификатор параметра, используемый в вызовах API.<br>
|
172
|
+
**@param** *String* `_name` имя параметра<br>
|
173
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
174
|
+
|
175
|
+
#### Opt.title
|
176
|
+
Определяет описание для параметра, используемое в текстовых сообщениях.<br>
|
177
|
+
**@param** *String* `_title` название параметра<br>
|
178
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
179
|
+
|
180
|
+
#### Opt.short
|
181
|
+
Назначает ключ для короткого имени параметра, передаваемого из командной строки с одинарным дефисом (например, `-v`).<br>
|
182
|
+
**@param** *String* `_short`<br>
|
183
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
184
|
+
|
185
|
+
#### Opt.long
|
186
|
+
Назначает ключ для длинного имени параметра, передаваемого из командной строки с двойным дефисом (например, `--version`).<br>
|
187
|
+
**@param** *String* `_long`<br>
|
188
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
189
|
+
|
190
|
+
#### Opt.flag
|
191
|
+
Помечает параметр как логический, т.е. параметр не имеющий значения.<br>
|
192
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
193
|
+
|
194
|
+
#### Opt.arr
|
195
|
+
Помечает параметр как принимающий множественные значения.<br>
|
196
|
+
Иначе будет использовано последнее переданное значение параметра.<br>
|
197
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
198
|
+
|
199
|
+
#### Opt.req
|
200
|
+
Помечает параметр как обязательный.<br>
|
201
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
202
|
+
|
203
|
+
#### Opt.only
|
204
|
+
Интерпретирует параметр как команду,
|
205
|
+
т.е. программа будет завершена сразу после выполнения параметра.<br>
|
206
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
207
|
+
|
208
|
+
#### Opt.val
|
209
|
+
Назначает функцию валидации (или трансформации значения) для значения параметра.<br>
|
210
|
+
Значение, полученное из командной строки, передается в функцию-валидатор прежде чем оно станет доступно из API.<br>
|
211
|
+
Используется для валидации и трансформации введенных данных.<br>
|
212
|
+
**@param** *Function* `_val` функция валидации,
|
213
|
+
исполняемая в контексте экземпляра параметра
|
214
|
+
и принимающая в качестве единственного параметра значение, полученное
|
215
|
+
из командной строки<br>
|
216
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
217
|
+
|
218
|
+
#### Opt.def
|
219
|
+
Назначает значение параметра по умолчанию. Это значение также передается
|
220
|
+
в функцию валидации как обычное значение.<br>
|
221
|
+
**@param** *Object* `_def`<br>
|
222
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
223
|
+
|
224
|
+
#### Opt.input
|
225
|
+
Помечает параметр как принимающий ввод пользователя. <br>
|
226
|
+
Позволяет использовать валидацию для STDIN.<br>
|
227
|
+
**@returns** *{COA.Opt}* `this` экземпляр параметра (для поддержки цепочки методов)
|
228
|
+
|
229
|
+
#### Opt.output
|
230
|
+
Помечает параметр как вывод.<br>
|
231
|
+
Позволяет использовать валидацию для STDOUT.<br>
|
232
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
233
|
+
|
234
|
+
#### Opt.act
|
235
|
+
Добавляет (или создает) действие для текущего параметра команды.
|
236
|
+
Это действие будет выполнено, если текущий параметр есть
|
237
|
+
в списке полученных параметров (с любым значением).<br>
|
238
|
+
**@param** *Function* `act` функция, выполняемая в контексте
|
239
|
+
экземпляра текущей команды и принимающая следующие параметры:<br>
|
240
|
+
- *Object* `opts` параметры команды<br>
|
241
|
+
- *Array* `args` аргументы команды<br>
|
242
|
+
- *Object* `res` объект-аккумулятор результатов<br>
|
243
|
+
Функция может вернуть проваленный промис из Cmd.reject (в случае ошибки)
|
244
|
+
или любое другое значение, рассматриваемое как результат.<br>
|
245
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
246
|
+
|
247
|
+
#### Opt.comp
|
248
|
+
Назначает кастомную функцию автодополнения для текущей команды.<br>
|
249
|
+
**@param** *Function* `fn` функция-генератор автодоплнения, исполняемая в
|
250
|
+
контексте экземпляра команды.
|
251
|
+
Принимает параметры:<br>
|
252
|
+
- *Object* `opts` параметры автодополнения<br>
|
253
|
+
Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.<br>
|
254
|
+
**@returns** *COA.Opt* `this` экземпляр параметра (для поддержки цепочки методов)
|
255
|
+
|
256
|
+
#### Opt.end
|
257
|
+
Завершает цепочку методов текущего параметра и возвращает экземпляр родительской команды.<br>
|
258
|
+
**@returns** *COA.Cmd* `parent` родительская команда
|
259
|
+
|
260
|
+
|
261
|
+
### Arg
|
262
|
+
Аргумент — неименованная сущность.<br>
|
263
|
+
Аргументы передаются из командной строки как список неименованных значений.
|
264
|
+
|
265
|
+
#### Arg.name
|
266
|
+
Определяет канонический идентификатор аргумента, используемый в вызовах API.<br>
|
267
|
+
**@param** *String* `_name` имя аргумента<br>
|
268
|
+
**@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов)
|
269
|
+
|
270
|
+
#### Arg.title
|
271
|
+
Определяет описание для аргумента, используемое в текстовых сообщениях.<br>
|
272
|
+
**@param** *String* `_title` описание аргумента<br>
|
273
|
+
**@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов)
|
274
|
+
|
275
|
+
#### Arg.arr
|
276
|
+
Помечает аргумент как принимающий множественные значения.<br>
|
277
|
+
Иначе будет использовано последнее переданное значение аргумента.<br>
|
278
|
+
**@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов)
|
279
|
+
|
280
|
+
#### Arg.req
|
281
|
+
Помечает аргумент как обязательный.<br>
|
282
|
+
**@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов)
|
283
|
+
|
284
|
+
#### Arg.val
|
285
|
+
Назначает функцию валидации (или трансформации значения) для аргумента.<br>
|
286
|
+
Значение, полученное из командной строки, передается в функцию-валидатор прежде чем оно станет доступно из API.<br>
|
287
|
+
Используется для валидации и трансформации введенных данных.<br>
|
288
|
+
**@param** *Function* `_val` функция валидации,
|
289
|
+
исполняемая в контексте экземпляра аргумента
|
290
|
+
и принимающая в качестве единственного параметра значение, полученное
|
291
|
+
из командной строки<br>
|
292
|
+
**@returns** *COA.Opt* `this` экземпляр аргумента (для поддержки цепочки методов)
|
293
|
+
|
294
|
+
#### Arg.def
|
295
|
+
Назначает дефолтное значение для аргумента. Дефолтное значение передается
|
296
|
+
в функцию валидации как обычное значение.<br>
|
297
|
+
**@param** *Object* `_def`<br>
|
298
|
+
**@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов)
|
299
|
+
|
300
|
+
#### Arg.output
|
301
|
+
Помечает параметр как вывод.<br>
|
302
|
+
Позволяет назначить валидацию для STDOUT.<br>
|
303
|
+
**@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов)
|
304
|
+
|
305
|
+
#### Arg.comp
|
306
|
+
Назначает кастомную функцию автодополнения для текущего аргумента.<br>
|
307
|
+
**@param** *Function* `fn` функция-генератор автодоплнения,
|
308
|
+
исполняемая в контексте текущей команды.
|
309
|
+
Принимает параметры:<br>
|
310
|
+
- *Object* `opts` параметры
|
311
|
+
Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.<br>
|
312
|
+
**@returns** *COA.Arg* `this` экземпляр аргумента (для поддержки цепочки методов)
|
313
|
+
|
314
|
+
#### Arg.end
|
315
|
+
Завершает цепочку методов текущего аргумента и возвращает экземпляр родительской команды.<br>
|
316
|
+
**@returns** *COA.Cmd* `parent` родительская команда
|
package/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
module.exports = require(
|
1
|
+
module.exports = require('./lib');
|