Command-Option-Argument
Last updated
Last updated
COA — парсер параметров командной строки, позволяющий извлечь максимум пользы от формального API вашей программы. Как только вы опишете определение в терминах команд, параметров и аргументов, вы автоматически получите:
Справку для командной строки
API для использования программы как модуля в COA-совместимых программах
Автодополнение для командной строки
Широкий выбор настроек для параметров и аргументов, включая множественные значения, логические значения и обязательность параметров
Возможность асинхронного исполнения команд, используя промисы (используется библиотека Q)
Простота использования существующих команд как подмодулей для новых команд
Комбинированная валидация и анализ сложных значений
Команда — сущность верхнего уровня. У команды могут быть определены параметры и аргументы.
Возвращает объект, который можно использовать в других программах. Подкоманды являются методами этого объекта. @returns {Object}
Определяет канонический идентификатор команды, используемый в вызовах API.
@param String _name
имя команды
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Определяет название команды, используемый в текстовых сообщениях.
@param String _title
название команды
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Создает новую подкоманду или добавляет ранее определенную подкоманду к текущей команде.
@param COA.Cmd [cmd]
экземпляр ранее определенной подкоманды
@returns COA.Cmd экземпляр новой или ранее определенной подкоманды
Создает параметр для текущей команды.
@returns COA.Opt new
экземпляр параметра
Создает аргумент для текущей команды.
@returns COA.Opt new
экземпляр аргумента
Добавляет (или создает) действие для текущей команды.
@param Function act
функция, выполняемая в контексте экземпляра текущей команды и принимающая следующие параметры:
- Object opts
параметры команды
- Array args
аргументы команды
- Object res
объект-аккумулятор результатов
Функция может вернуть проваленный промис из Cmd.reject (в случае ошибки) или любое другое значение, рассматриваемое как результат.
@param {Boolean} [force=false] флаг, назначающий немедленное исполнение вместо добавления к списку существующих действий
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Исполняет функцию с переданными аргументами в контексте экземпляра текущей команды.
@param Function fn
@param Array args
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Назначает кастомную функцию автодополнения для текущей команды.
@param Function fn
функция-генератор автодополнения, исполняемая в контексте текущей команды. Принимает параметры:
- Object opts
параметры
Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Ставит флаг поддержки справки командной строки, т.е. вызов команды с параметрами -h --help выводит справку по работе с командой.
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Добавляет поддержку автодополнения командной строки. Добавляется подкоманда "completion", которая выполняет все необходимые действия.
Может быть добавлен только для главной команды.
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Возвращает текст справки по использованию команды для текущего экземпляра.
@returns String usage
Текст справки по использованию
Разбирает аргументы из значения, возвращаемого NodeJS process.argv, и запускает текущую программу, т.е. вызывает process.exit после завершения всех действий.
@param Array argv
@returns COA.Cmd this
экземпляр команды (для поддержки цепочки методов)
Исполняет переданную (или текущую) команду с указанными параметрами и аргументами.
@param String|Array cmds
подкоманда для исполнения (необязательно)
@param Object opts
параметры, передаваемые команде (необязательно)
@param Object args
аргументы, передаваемые команде (необязательно)
@returns Q.Promise
Проваливает промисы, возращенные в действиях.
Используется в .act() для возврата с ошибкой.
@param Object reason
причина провала
Вы можете определить метод toString() и свойство toString() объекта причины провала.
@returns Q.promise проваленный промис
Завершает цепочку методов текущей подкоманды и возвращает экземпляр родительской команды.
@returns COA.Cmd parent
родительская команда
Параметр — именованная сущность. У параметра может быть определено короткое или длинное имя для использования из командной строки. @namespace @class Переданный параметр
Определяет канонический идентификатор параметра, используемый в вызовах API.
@param String _name
имя параметра
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Определяет описание для параметра, используемое в текстовых сообщениях.
@param String _title
название параметра
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Назначает ключ для короткого имени параметра, передаваемого из командной строки с одинарным дефисом (например, -v
).
@param String _short
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Назначает ключ для длинного имени параметра, передаваемого из командной строки с двойным дефисом (например, --version
).
@param String _long
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Помечает параметр как логический, т.е. параметр не имеющий значения.
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Помечает параметр как принимающий множественные значения.
Иначе будет использовано последнее переданное значение параметра.
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Помечает параметр как обязательный.
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Интерпретирует параметр как команду, т.е. программа будет завершена сразу после выполнения параметра.
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Назначает функцию валидации (или трансформации значения) для значения параметра.
Значение, полученное из командной строки, передается в функцию-валидатор прежде чем оно станет доступно из API.
Используется для валидации и трансформации введенных данных.
@param Function _val
функция валидации, исполняемая в контексте экземпляра параметра и принимающая в качестве единственного параметра значение, полученное из командной строки
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Назначает значение параметра по умолчанию. Это значение также передается в функцию валидации как обычное значение.
@param Object _def
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Помечает параметр как принимающий ввод пользователя.
Позволяет использовать валидацию для STDIN.
@returns {COA.Opt} this
экземпляр параметра (для поддержки цепочки методов)
Помечает параметр как вывод.
Позволяет использовать валидацию для STDOUT.
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Добавляет (или создает) действие для текущего параметра команды. Это действие будет выполнено, если текущий параметр есть в списке полученных параметров (с любым значением).
@param Function act
функция, выполняемая в контексте экземпляра текущей команды и принимающая следующие параметры:
- Object opts
параметры команды
- Array args
аргументы команды
- Object res
объект-аккумулятор результатов
Функция может вернуть проваленный промис из Cmd.reject (в случае ошибки) или любое другое значение, рассматриваемое как результат.
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Назначает кастомную функцию автодополнения для текущей команды.
@param Function fn
функция-генератор автодоплнения, исполняемая в контексте экземпляра команды. Принимает параметры:
- Object opts
параметры автодополнения
Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.
@returns COA.Opt this
экземпляр параметра (для поддержки цепочки методов)
Завершает цепочку методов текущего параметра и возвращает экземпляр родительской команды.
@returns COA.Cmd parent
родительская команда
Аргумент — неименованная сущность. Аргументы передаются из командной строки как список неименованных значений.
Определяет канонический идентификатор аргумента, используемый в вызовах API.
@param String _name
имя аргумента
@returns COA.Arg this
экземпляр аргумента (для поддержки цепочки методов)
Определяет описание для аргумента, используемое в текстовых сообщениях.
@param String _title
описание аргумента
@returns COA.Arg this
экземпляр аргумента (для поддержки цепочки методов)
Помечает аргумент как принимающий множественные значения.
Иначе будет использовано последнее переданное значение аргумента.
@returns COA.Arg this
экземпляр аргумента (для поддержки цепочки методов)
Помечает аргумент как обязательный.
@returns COA.Arg this
экземпляр аргумента (для поддержки цепочки методов)
Назначает функцию валидации (или трансформации значения) для аргумента.
Значение, полученное из командной строки, передается в функцию-валидатор прежде чем оно станет доступно из API.
Используется для валидации и трансформации введенных данных.
@param Function _val
функция валидации, исполняемая в контексте экземпляра аргумента и принимающая в качестве единственного параметра значение, полученное из командной строки
@returns COA.Opt this
экземпляр аргумента (для поддержки цепочки методов)
Назначает дефолтное значение для аргумента. Дефолтное значение передается в функцию валидации как обычное значение.
@param Object _def
@returns COA.Arg this
экземпляр аргумента (для поддержки цепочки методов)
Помечает параметр как вывод.
Позволяет назначить валидацию для STDOUT.
@returns COA.Arg this
экземпляр аргумента (для поддержки цепочки методов)
Назначает кастомную функцию автодополнения для текущего аргумента.
@param Function fn
функция-генератор автодоплнения, исполняемая в контексте текущей команды. Принимает параметры:
- Object opts
параметры Может возвращать промис или любое другое значение, рассматриваемое как результат исполнения команды.
@returns COA.Arg this
экземпляр аргумента (для поддержки цепочки методов)
Завершает цепочку методов текущего аргумента и возвращает экземпляр родительской команды.
@returns COA.Cmd parent
родительская команда