Skip to content

Commit

Permalink
Дока 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Nivanchenko committed May 11, 2023
1 parent 5104431 commit 36d48a6
Showing 1 changed file with 156 additions and 0 deletions.
156 changes: 156 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@

```date``` - Имеет две подкоманды, ```day``` выводит в консоль начало дня, и ```month``` выводит в консоль начало месяца.

## Аргументы

Подготовим первую команду:

```Каталог/С/Классами/Команд/КомандаПлюс.os```
Expand All @@ -49,8 +51,162 @@
КонецПроцедуры
```

В этом примере мы определили класс как команду консольного приложения с помощью аннотации

```&КомандаПриложения(Имя = "p plus", Описание = "Прибавляет 10 к заданному числу")```

В которой указали имя команды и ее описание. А для определения аргумента команды, была создана переменная с аннотацией

```&Аргумент(Имя = "ARG", Описание = "Значение числа")```

Для того, что бы дать понять библиотеке, какой метод нужно выполнить при вызове команды, нужно сделать экспортный метод с аннотацией

```&ВыполнениеКоманды```

## Опции

Команда с опцией

```Каталог/С/Классами/Команд/КомандаПривет.os```
```bsl
&Опция(Имя = "n name", Описание = "Имя пользователя")
Перем ИмяПользователя;
&КомандаПриложения(Имя = "h hello", Описание = "Поздоровается с пользователем")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
&ВыполнениеКоманды
Процедура ПоприветствоватьПользователя() Экспорт
ТекстСообщения = "Привет " + ИмяПользователя + "!";
Сообщить(ТекстСообщения);
КонецПроцедуры
```

В этом примере, для определения опции команды, была создана переменная с аннотацией

```&Опция(Имя = "n name", Описание = "Имя пользователя")```

## Подкоманды

Теперь определим последнюю команду, которая имеет две подкоманды

```Каталог/С/Классами/Команд/КомандаДата.os```
```bsl
&КомандаПриложения(Имя = "d date",
Описание = "Выводит дату",
Подкоманда = "day",
Подкоманда = "month"
)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
```

в аннотации ```&КомандаПриложения``` которой, с помощью параметров ```Подкоманда``` мы указали имена подчиненных команд.

Осталось определить эти две подкоманды

```Каталог/С/Классами/Команд/ПодкомандаДень.os```
```bsl
&КомандаПриложения(Имя = "day", Описание = "Выводит дату - начало дня", ЭтоПодкоманда = Истина)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
&ВыполнениеКоманды
Процедура СообщитьДень() Экспорт
Сообщить(НачалоДня(ТекущаяДата()));
КонецПроцедуры
```

```Каталог/С/Классами/Команд/ПодкомандаМесяц.os```
```bsl
&КомандаПриложения(Имя = "month", Описание = "Выводит дату - начало месяца", ЭтоПодкоманда = Истина)
Процедура ПриСозданииОбъекта()
КонецПроцедуры
&ВыполнениеКоманды
Процедура СообщитьМесяц() Экспорт
Сообщить(НачалоМесяца(ТекущаяДата()));
КонецПроцедуры
```

Стоит отметить, что тут в аннотации ```&КомандаПриложения```, устанавливается параметр ```ЭтоПодкоманда = Истина```

## Типы аргументов и опций

Имеется набор аннотаций, которые можно добавить к полям команд, которые обозначат, к какому типу нужно приводить эти поля

```bsl
&ВОкружении
&Флаговый
&Флаг
&СкрытьВСправке
&ПоУмолчанию
&ТБулево
&ТДата
&ТЧисло
&ТСтрока
&ТМассивДат
&ТМассивЧисел
&ТМассивСтрок
&Псевдоним
&Описание
&Обязательный
&ПодробноеОписание
```

## Настройка версии и имени приложения.

Настройку вывода версии и имени приложения можно осуществить двумя способами.

1) Создать рядом с точкой входа файл

```autumn-properties.json```
```json
{
"cli": {
"ИмяПриложения": "cli_test",
"ПолноеИмяПриложения": "cli_test v%{cli.ВерсияПриложения}",
"ВерсияПриложения": "1.0.1"
}
}
```

2) В каталог с командами, которые будут загружены в контекст осени, добавить желудь с определенным интерфейсом

```Каталог/С/Классами/Команд/ПодкомандаМесяц.os```
```bsl
&Желудь("ОписаниеКонсольногоПриложения")
&Верховный
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Функция ИмяПриложения() Экспорт
Возврат "demo-cli";
КонецФункции
Функция ПолноеИмяПриложения() Экспорт
Возврат "Демонстрационное консольное приложение";
КонецФункции
Функция ВерсияПриложения() Экспорт
Возврат "1.0";
КонецФункции
```

## Больше примеров

Описанные классы можно посмотреть в каталоге [example](example/) и еще больше примеров команд в каталоге [tests](tests/Классы)


0 comments on commit 36d48a6

Please sign in to comment.