Skip to content

Commit a0b5c4d

Browse files
authored
Merge pull request #41 from oscript-library/EvilBeaver-docs-1
Update README.md
2 parents 33a0217 + 3857927 commit a0b5c4d

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

README.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@
117117
$ opm install -f <ПутьКФайлу>
118118
```
119119

120+
Либо, скачать библиотеку с помощью opm:
121+
122+
opm install cli
123+
120124
## Базовые принципы
121125

122126
При создании приложения необходимо указать имя приложения и описание:
@@ -125,35 +129,52 @@ $ opm install -f <ПутьКФайлу>
125129
Приложение = Новый КонсольноеПриложение("cli", "Помощник генерации приложения на основании шаблона cli");
126130
```
127131

128-
Для установки основной функции выполнения приложения необходимо создать класс, или сам модуль должен реализовать экспортную процедуру:
132+
Каждый возможный вариант выполнения - это "Команда". Команды могут создаваться явно, кроме того, само Приложение содержит в себе корневую (Основную) команду.
133+
134+
Каждая команда реализуется в виде отдельного класса. Каждый такой класс обязан иметь экспортную процедуру
135+
129136
```bsl
130137
Процедура ВыполнитьКоманду(Знач Команда) Экспорт
131138
КонецПроцедуры
132139
```
140+
141+
Для установки основной функции выполнения приложения в приложении надо установить основное действие. В простейшем случае основным действием может выступать сам стартовый сценарий:
142+
133143
Передать данный класс через процедуру:
134144
```bsl
135145
Приложение.УстановитьОсновноеДействие(ЭтотОбъект)
136146
```
137147

148+
### Встроенная команда "Версия"
138149

139150
Для добавления отображения версии через опции: ```-v, --version``` надо добавить строчку:
140151

141152
```bsl
142153
Приложение.Версия("v version", "1.2.3");
143154
```
144155

156+
Это позволит запускать приложение с ключом ``v`` или ``--version``:
157+
158+
my-app --version
159+
160+
### Запуск парсера аргументов и приложения в целом
161+
145162
Для запуска приложения необходимо добавить строчку:
146163

147164
```bsl
148165
Приложение.Запустить(АргументыКоманднойСтроки);
149166
```
150167

168+
Этот вызов является "точкой входа" в консольное приложение. В общем случае, после него уже не идет никакого дополнительного кода. Парсер анализирует аргументы и запускает команды автоматически.
169+
151170
## Параметры команд/приложения
152171

153172
Все параметры разделяются на два типа:
154173
* Опция
155174
* Аргумент
156175

176+
В общем случае, Опции имеют имена, аргументы являются позиционными. Кроме того, по умолчанию указание опций необязательно, а аргументов - обязательно. Это можно переопределить, но дефолтное поведение именно такое. Аргумент - обязателен, опция - нет.
177+
157178
## Опция
158179

159180
Опция может быть следующих простых типов:
@@ -347,7 +368,7 @@ cli поддерживает автоматическую инициализац
347368

348369
## Строка использования приложения (спек)
349370

350-
Синтаксис спек базируется на POSIX.
371+
Синтаксис спек базируется на POSIX. Спек является грамматикой парсера аргументов и определяет порядок следования аргументов и опций в командной строке, а также вариативность параметров. Спек формируется либо вручную через указание в поле `Спек`, либо автоматически в момент вызова выполнения приложения / или команды.
351372

352373
### Опции
353374

@@ -376,7 +397,7 @@ cli поддерживает автоматическую инициализац
376397

377398
Пример добавления аргументов в команду:
378399

379-
```go
400+
```bsl
380401
Команда.Аргумент("SRC", ...);
381402
Команда.Аргумент("DST", ...);
382403
```
@@ -389,6 +410,8 @@ cli позволяет произвольно настраивать поряд
389410
Команда.Спек = "-f -g NAME -h PATH";
390411
```
391412

413+
В примере выше задана грамматика: в командой строке могут идти сначала опции -f и -g, затем аргумент NAME, затем опция -h, затем аргумент PATH.
414+
392415
## Необязательность
393416

394417
Для того, чтобы сделать аргументы или опции необязательными, их необходимо заключить в `[...]`:

0 commit comments

Comments
 (0)