You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Приложение = Новый КонсольноеПриложение("cli", "Помощник генерации приложения на основании шаблона cli");
126
130
```
127
131
128
-
Для установки основной функции выполнения приложения необходимо создать класс, или сам модуль должен реализовать экспортную процедуру:
132
+
Каждый возможный вариант выполнения - это "Команда". Команды могут создаваться явно, кроме того, само Приложение содержит в себе корневую (Основную) команду.
133
+
134
+
Каждая команда реализуется в виде отдельного класса. Каждый такой класс обязан иметь экспортную процедуру
135
+
129
136
```bsl
130
137
Процедура ВыполнитьКоманду(Знач Команда) Экспорт
131
138
КонецПроцедуры
132
139
```
140
+
141
+
Для установки основной функции выполнения приложения в приложении надо установить основное действие. В простейшем случае основным действием может выступать сам стартовый сценарий:
142
+
133
143
Передать данный класс через процедуру:
134
144
```bsl
135
145
Приложение.УстановитьОсновноеДействие(ЭтотОбъект)
136
146
```
137
147
148
+
### Встроенная команда "Версия"
138
149
139
150
Для добавления отображения версии через опции: ```-v, --version``` надо добавить строчку:
140
151
141
152
```bsl
142
153
Приложение.Версия("v version", "1.2.3");
143
154
```
144
155
156
+
Это позволит запускать приложение с ключом ``v`` или ``--version``:
157
+
158
+
my-app --version
159
+
160
+
### Запуск парсера аргументов и приложения в целом
161
+
145
162
Для запуска приложения необходимо добавить строчку:
146
163
147
164
```bsl
148
165
Приложение.Запустить(АргументыКоманднойСтроки);
149
166
```
150
167
168
+
Этот вызов является "точкой входа" в консольное приложение. В общем случае, после него уже не идет никакого дополнительного кода. Парсер анализирует аргументы и запускает команды автоматически.
169
+
151
170
## Параметры команд/приложения
152
171
153
172
Все параметры разделяются на два типа:
154
173
* Опция
155
174
* Аргумент
156
175
176
+
В общем случае, Опции имеют имена, аргументы являются позиционными. Кроме того, по умолчанию указание опций необязательно, а аргументов - обязательно. Это можно переопределить, но дефолтное поведение именно такое. Аргумент - обязателен, опция - нет.
177
+
157
178
## Опция
158
179
159
180
Опция может быть следующих простых типов:
@@ -347,7 +368,7 @@ cli поддерживает автоматическую инициализац
347
368
348
369
## Строка использования приложения (спек)
349
370
350
-
Синтаксис спек базируется на POSIX.
371
+
Синтаксис спек базируется на POSIX. Спек является грамматикой парсера аргументов и определяет порядок следования аргументов и опций в командной строке, а также вариативность параметров. Спек формируется либо вручную через указание в поле `Спек`, либо автоматически в момент вызова выполнения приложения / или команды.
351
372
352
373
### Опции
353
374
@@ -376,7 +397,7 @@ cli поддерживает автоматическую инициализац
376
397
377
398
Пример добавления аргументов в команду:
378
399
379
-
```go
400
+
```bsl
380
401
Команда.Аргумент("SRC", ...);
381
402
Команда.Аргумент("DST", ...);
382
403
```
@@ -389,6 +410,8 @@ cli позволяет произвольно настраивать поряд
389
410
Команда.Спек = "-f -g NAME -h PATH";
390
411
```
391
412
413
+
В примере выше задана грамматика: в командой строке могут идти сначала опции -f и -g, затем аргумент NAME, затем опция -h, затем аргумент PATH.
414
+
392
415
## Необязательность
393
416
394
417
Для того, чтобы сделать аргументы или опции необязательными, их необходимо заключить в `[...]`:
0 commit comments