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");
125
129
```
126
130
127
-
Для установки основной функции выполнения приложения необходимо создать класс, или сам модуль должен реализовать экспортную процедуру:
131
+
Каждый возможный вариант выполнения - это "Команда". Команды могут создаваться явно, кроме того, само Приложение содержит в себе корневую (Основную) команду.
132
+
133
+
Каждая команда реализуется в виде отдельного класса. Каждый такой класс обязан иметь экспортную процедуру
134
+
128
135
```bsl
129
136
Процедура ВыполнитьКоманду(Знач Команда) Экспорт
130
137
КонецПроцедуры
131
138
```
139
+
140
+
Для установки основной функции выполнения приложения в приложении надо установить основное действие. В простейшем случае основным действием может выступать сам стартовый сценарий:
141
+
132
142
Передать данный класс через процедуру:
133
143
```bsl
134
144
Приложение.УстановитьОсновноеДействие(ЭтотОбъект)
135
145
```
136
146
147
+
### Встроенная команда "Версия"
137
148
138
149
Для добавления отображения версии через опции: ```-v, --version``` надо добавить строчку:
139
150
140
151
```bsl
141
152
Приложение.Версия("v version", "1.2.3");
142
153
```
143
154
155
+
Это позволит запускать приложение с ключом ``v`` или ``--version``:
156
+
157
+
my-app --version
158
+
159
+
### Запуск парсера аргументов и приложения в целом
160
+
144
161
Для запуска приложения необходимо добавить строчку:
145
162
146
163
```bsl
147
164
Приложение.Запустить(АргументыКоманднойСтроки);
148
165
```
149
166
167
+
Этот вызов является "точкой входа" в консольное приложение. В общем случае, после него уже не идет никакого дополнительного кода. Парсер анализирует аргументы и запускает команды автоматически.
168
+
150
169
## Параметры команд/приложения
151
170
152
171
Все параметры разделяются на два типа:
153
172
* Опция
154
173
* Аргумент
155
174
175
+
В общем случае, Опции имеют имена, аргументы являются позиционными. Кроме того, по умолчанию указание опций необязательно, а аргументов - обязательно. Это можно переопределить, но дефолтное поведение именно такое. Аргумент - обязателен, опция - нет.
176
+
156
177
## Опция
157
178
158
179
Опция может быть следующих простых типов:
@@ -312,7 +333,7 @@ cli поддерживает автоматическую инициализац
312
333
313
334
## Строка использования приложения (спек)
314
335
315
-
Синтаксис спек базируется на POSIX.
336
+
Синтаксис спек базируется на POSIX. Спек является грамматикой парсера аргументов и определяет порядок следования аргументов и опций в командной строке, а также вариативность параметров. Спек формируется либо вручную, либо автоматически в момент вызова методов ```Опция/Аргумент```
316
337
317
338
### Опции
318
339
@@ -341,7 +362,7 @@ cli поддерживает автоматическую инициализац
341
362
342
363
Пример добавления аргументов в команду:
343
364
344
-
```go
365
+
```bsl
345
366
Команда.Аргумент("SRC", ...);
346
367
Команда.Аргумент("DST", ...);
347
368
```
@@ -354,6 +375,8 @@ cli позволяет произвольно настраивать поряд
354
375
Команда.Спек = "-f -g NAME -h PATH";
355
376
```
356
377
378
+
В примере выше задана грамматика: в командой строке могут идти сначала флаги -f и -g, затем аргумент NAME, затем флаг -h, затем аргумент PATH.
379
+
357
380
## Необязательность
358
381
359
382
Для того, чтобы сделать аргументы или опции необязательными, их необходимо заключить в `[...]`:
0 commit comments