Skip to content

Commit

Permalink
документировал показ стека вызовов
Browse files Browse the repository at this point in the history
  • Loading branch information
Artur Ayukhanov committed Mar 20, 2024
1 parent 80c32f0 commit d513e9f
Showing 1 changed file with 43 additions and 20 deletions.
63 changes: 43 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# autumn-cli
# autumn-cli

Обертка над [cli](https://github.com/khorevaa/cli) библиотекой, которая предоставляет возможности создания консольных приложений на фреймворке [ОСень](https://github.com/autumn-library/autumn).

Expand Down Expand Up @@ -38,7 +38,7 @@
&КомандаПриложения(Имя = "p plus", Описание = "Прибавляет 10 к заданному числу") // Аннотация, обозначающая, что этот класс - консольная команда
Процедура ПриСозданииОбъекта()
КонецПроцедуры
&ВыполнениеКоманды // Метод, помеченный этой аннотацией будет выполнены при вызове команды.
Expand All @@ -47,15 +47,15 @@
Результат = ПереданноеЧисло + 10;
Сообщить("Результат сложения: " + Результат);
КонецПроцедуры
```

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

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

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

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

Expand All @@ -74,7 +74,7 @@
&КомандаПриложения(Имя = "H hello", Описание = "Поздоровается с пользователем")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
&ВыполнениеКоманды
Expand All @@ -83,11 +83,11 @@
ТекстСообщения = "Привет " + ИмяПользователя + "!";
Сообщить(ТекстСообщения);
КонецПроцедуры
```

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

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

Expand All @@ -97,13 +97,13 @@

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

Expand All @@ -113,7 +113,7 @@
```bsl
&ПодкомандаПриложения(Имя = "day", Описание = "Выводит дату - начало дня")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
&ВыполнениеКоманды
Expand All @@ -128,14 +128,14 @@
```bsl
&ПодкомандаПриложения(Имя = "month", Описание = "Выводит дату - начало месяца")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
&ВыполнениеКоманды
Процедура СообщитьМесяц() Экспорт
Сообщить(НачалоМесяца(ТекущаяДата()));
КонецПроцедуры
```

Expand Down Expand Up @@ -192,7 +192,7 @@

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

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

```autumn-properties.json```
```json
Expand Down Expand Up @@ -227,11 +227,36 @@
КонецФункции
```

## Настройка показа полного стека вызовов при ошибках приложения

При ошибках, исключениях внутри приложения вместе с описанием ошибки по умолчанию выдается полный стек вызовов приложения.
Стек служебных вызовов из библиотек ОСени исключается для облегчения чтения логов пользователем.

Чтобы исключить показ стека вызовов при ошибках, нужно

- в файле `autumn-properties.json` указать значение `false` для ключа `ПоказыватьСтекВызововПриОшибке` в корневом разделе `cli`
- пример файла
```json
{
"cli": {
"ИмяПриложения": "cli_test",
"ПолноеИмяПриложения": "cli_test v%{cli.ВерсияПриложения}",
"ВерсияПриложения": "1.0.1",
"ПоказыватьСтекВызововПриОшибке" : false
}
}
```

Чтобы включить показ стека вызовов при ошибках, можно
- или задать `true`
- или просто удалить ключ из файла для возврата поведения по умолчанию.


## Миграция с [cli](https://github.com/khorevaa/cli)

Инфраструктурный, условный ```main.os``` от вашего приложения не нужен. он должен быть запущен при помощи [ОСени](https://github.com/autumn-library/autumn). Дальше перед вами три пути:
Инфраструктурный, условный ```main.os``` от вашего приложения не нужен. он должен быть запущен при помощи [ОСени](https://github.com/autumn-library/autumn). Дальше перед вами три пути:

Первый - команды модифицировать аннотациями конструктора ```&КомандаПриложения``` или ```&ПодкомандаПриложения```. оставить методы ```ОписаниеКоманды``` и ```ВыполнитьКоманду```, тогда фреймворк поймет что они уже реализованы, и не будет генерировать для них код.
Первый - команды модифицировать аннотациями конструктора ```&КомандаПриложения``` или ```&ПодкомандаПриложения```. оставить методы ```ОписаниеКоманды``` и ```ВыполнитьКоманду```, тогда фреймворк поймет что они уже реализованы, и не будет генерировать для них код.

Второй - команды модифицировать аннотациями конструктора ```&КомандаПриложения``` или ```&ПодкомандаПриложения```. убрать методы ```ОписаниеКоманды``` и ```ВыполнитьКоманду```, и создать поля класса, с необходимыми аннотациями, и метод с аннотацией ```&ВыполнениеКоманды```. В таком случае фреймворк сгенерит все остальное за вас.

Expand All @@ -245,13 +270,13 @@
КонецПроцедуры
Процедура ОписаниеКоманды(Знач КомандаПриложения) Экспорт
КомандаПриложения.Опция("n name", "", "Имя пользователя");
КонецПроцедуры
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
ИмяПользователя = КомандаПриложения.ЗначениеОпции("name");
Сообщить("Привет " + ИмяПользователя);
Expand Down Expand Up @@ -279,5 +304,3 @@
## Больше примеров

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


0 comments on commit d513e9f

Please sign in to comment.