Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ jobs:
uses: autumn-library/workflows/.github/workflows/release.yml@main
with:
package_mask: "oneunit-*.ospx"
oscript_version: "2.1.0"
oscript_version: "2.2.0"
secrets:
PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }}
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
.АдресРепозитория("https://github.com/sfaqer/oneunit")
.Описание(ОписаниеКонсольногоПриложения.ПолноеИмяПриложения())
.ВерсияМанифеста("1.4.0")
.ВерсияСреды("2.0.0")
.ВерсияСреды("2.2.0")

.ВключитьФайл("src")
.ВключитьФайл("docs")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,64 +1,100 @@
#Использовать collectionos

Перем _Лог;
Перем _Хвосты; // Соответствие из КлючИЗначение - Недописанные строки потоков вывода:
// * Ключ - Булево - Истина для потока ошибок
// * Значение - Строка - Недописанная строка

Процедура Ошибка(Знач Сообщение) Экспорт
ОбработатьСтрокуЛога(Сообщение, Истина);
ОбработатьПорциюВывода(Сообщение, Истина);
КонецПроцедуры

Процедура Информация(Знач Сообщение) Экспорт
ОбработатьСтрокуЛога(Сообщение, Ложь);
ОбработатьПорциюВывода(Сообщение, Ложь);
КонецПроцедуры

Процедура ОбработатьСтрокуЛога(Сообщение, ЭтоОшибка)
// Выводит недописанные строки, оставшиеся после завершения процесса
//
Процедура Дописать() Экспорт

Сообщения = СтрРазделить(Сообщение, Символы.ПС);
Для каждого Хвост Из _Хвосты Цикл
Если Хвост.Значение <> "" Тогда
ВывестиСтроку(Хвост.Значение, Хвост.Ключ);
КонецЕсли;
КонецЦикла;

Для Каждого Сообщение Из Сообщения Цикл
_Хвосты.Очистить();

Сообщение = СтрЗаменить(Сообщение, Символы.ВК, "");
// В win при переключении консоли в UTF-8 появляется символ с кодом 65279 в начале сообщения и парсер JSON падает
Сообщение = СтрЗаменить(Сообщение, Символ(65279), "");
КонецПроцедуры

Попытка
// Вывод процесса приходит порциями, как его прочитал 1commands: порция может
// оборвать строку и обычно заканчивается переводом строки. Выводятся только
// целые строки, недописанная ждет следующей порции - иначе каждый стык порций
// давал бы в консоли пустую строку или строку, разорванную надвое
//
Процедура ОбработатьПорциюВывода(Знач Порция, Знач ЭтоОшибка)

ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Сообщение);
Поля = ПрочитатьJSON(ЧтениеJSON, Истина, Массивы.ИзЭлементов("time"));
ТекстСообщения = Поля.Получить("msg");
Хвост = _Хвосты.Получить(ЭтоОшибка);

Уровень = Поля.Получить("level");
Если Хвост = Неопределено Тогда
Хвост = "";
КонецЕсли;

Если Уровень = "DEBUG" Тогда
Уровень = УровниЛога.Отладка;
ИначеЕсли Уровень = "INFO" Тогда
Уровень = УровниЛога.Информация;
ИначеЕсли Уровень = "WARN" Тогда
Уровень = УровниЛога.Предупреждение;
ИначеЕсли Уровень = "ERROR" Тогда
Уровень = УровниЛога.Ошибка;
ИначеЕсли Уровень = "FATAL" Тогда
Уровень = УровниЛога.КритичнаяОшибка;
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off
Строки = СтрРазделить(Хвост + Порция, Символы.ПС);

_Лог.ПоляИз(Поля)
.Вывести(ТекстСообщения, Уровень);
_Хвосты.Вставить(ЭтоОшибка, Строки[Строки.ВГраница()]);
Строки.Удалить(Строки.ВГраница());

Исключение
Для Каждого СтрокаВывода Из Строки Цикл
ВывестиСтроку(СтрокаВывода, ЭтоОшибка);
КонецЦикла;

Если ЭтоОшибка Тогда
_Лог.Ошибка(Сообщение);
Иначе
_Лог.Информация(Сообщение);
КонецЕсли;
КонецПроцедуры

КонецПопытки;
Процедура ВывестиСтроку(Знач Сообщение, Знач ЭтоОшибка)

КонецЦикла;
Сообщение = СтрЗаменить(Сообщение, Символы.ВК, "");
// В win при переключении консоли в UTF-8 появляется символ с кодом 65279 в начале сообщения и парсер JSON падает
Сообщение = СтрЗаменить(Сообщение, Символ(65279), "");

Попытка

ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Сообщение);
Поля = ПрочитатьJSON(ЧтениеJSON, Истина, Массивы.ИзЭлементов("time"));
ТекстСообщения = Поля.Получить("msg");

Уровень = Поля.Получить("level");

Если Уровень = "DEBUG" Тогда
Уровень = УровниЛога.Отладка;
ИначеЕсли Уровень = "INFO" Тогда
Уровень = УровниЛога.Информация;
ИначеЕсли Уровень = "WARN" Тогда
Уровень = УровниЛога.Предупреждение;
ИначеЕсли Уровень = "ERROR" Тогда
Уровень = УровниЛога.Ошибка;
ИначеЕсли Уровень = "FATAL" Тогда
Уровень = УровниЛога.КритичнаяОшибка;
КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off

_Лог.ПоляИз(Поля)
.Вывести(ТекстСообщения, Уровень);

Исключение

Если ЭтоОшибка Тогда
_Лог.Ошибка(Сообщение);
Иначе
_Лог.Информация(Сообщение);
КонецЕсли;

КонецПопытки;

КонецПроцедуры

&Желудь
Процедура ПриСозданииОбъекта(&Лог("oscript.lib.oneunit.cli") Лог)
_Лог = Лог;
_Лог = Лог;
_Хвосты = Новый Соответствие;
КонецПроцедуры
2 changes: 2 additions & 0 deletions src/cli/Классы/КомандаОбнаружить.os
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@
ПараметрыЗапуска
);

_ЛогДляКомандыМенеджера.Дописать();

Если Результат.КодВозврата <> 0 Тогда
Сообщить("Обнаружение завершилось неудачно", СтатусСообщения.ОченьВажное);
ЗавершитьРаботу(Результат.КодВозврата);
Expand Down
2 changes: 2 additions & 0 deletions src/cli/Классы/КомандаТестировать.os
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@

Результат = _Запускатель.ВыполнитьТестирование(Детальки, _Лог, ПараметрыЗапуска);

_ЛогДляКомандыМенеджера.Дописать();

Если Результат.КодВозврата <> 0 Тогда
Сообщить("Тестирование завершилось неудачно", СтатусСообщения.ОченьВажное);
ЗавершитьРаботу(Результат.КодВозврата);
Expand Down
Loading
Loading