Skip to content

Commit

Permalink
Merge branch 'release/v1.5.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Jun 4, 2019
2 parents 05be96c + b866562 commit 902d1d2
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 27 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

Описание.Имя("1commands")
.Версия("1.4.0")
.Версия("1.5.0")
.ВерсияСреды("1.0.17")
.ЗависитОт("logos")
.ЗависитОт("asserts")
Expand Down
65 changes: 44 additions & 21 deletions src/Команда.os
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
Перем МинимальныйОжидаемыйКодВозврата;
Перем МаксимальныйОжидаемыйКодВозврата;
Перем ПериодОпросаВМиллисекундах;
Перем НемедленнныйВывод;
Перем НемедленныйВывод;
Перем ПодключенныеЛоги;
Перем ОбработчикОжиданияПроцесса;
Перем ДополнительныеПараметрыОбработчика;
Expand Down Expand Up @@ -128,7 +128,7 @@
// Добавить параметр команды.
//
// Параметры:
// Строка - новый единичный параметр или все параметы в одной строке
// Строка - новый единичный параметр или все параметры в одной строке
//
Процедура ДобавитьПараметр(Знач Параметр) Экспорт
Параметры.Добавить(Параметр);
Expand All @@ -149,7 +149,7 @@
// Может использовать для очистки параметров. Для этого нужно передать пустую строку
//
// Параметры:
// Строка - параметы в одной строке
// Строка - параметры в одной строке
//
Процедура УстановитьПараметры(Знач СтрокаПараметров) Экспорт
Параметры = Новый Массив;
Expand Down Expand Up @@ -186,12 +186,12 @@
// Управляет мгновенным выводом лога команды
//
// Параметры:
// НемедленныйПоказ - Булевое
// НемедленныйПоказ - Булево
// Ложь: показывает вывод только после завершения выполнения команды
// Истина: показ вывода выполняется почти сразу, после появления очередной порции сообщений от команды
//
Процедура ПоказыватьВыводНемедленно(Знач НемедленныйПоказ) Экспорт
НемедленнныйВывод = НемедленныйПоказ;
НемедленныйВывод = НемедленныйПоказ;
КонецПроцедуры

// Устанавливает передачу вывода команды в дополнительный лог
Expand All @@ -217,7 +217,8 @@
// ППериодОпросаВМиллисекундах - Число - период вызова обработчика ожидания, мс (по умолчанию 5000)
// ДополнительныеПараметры - Структура - дополнительные параметры передаваемые в обработчик ожидания
//
Процедура УстановитьОбработчикОжидания(Обработчик, Знач ППериодОпросаВМиллисекундах = 5000, ДополнительныеПараметры = Неопределено) Экспорт
Процедура УстановитьОбработчикОжидания(Обработчик, Знач ППериодОпросаВМиллисекундах = 5000,
ДополнительныеПараметры = Неопределено) Экспорт

ОбработчикОжиданияПроцесса = Обработчик;
ПериодОпросаВМиллисекундах = ППериодОпросаВМиллисекундах;
Expand Down Expand Up @@ -389,20 +390,41 @@
Попытка

Если КодировкаВывода = Неопределено Тогда
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки, , ПеременныеСредыПроцесса);
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки, ,
ПеременныеСредыПроцесса);
Иначе
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки, КодировкаВывода, ПеременныеСредыПроцесса);
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки,
КодировкаВывода, ПеременныеСредыПроцесса);
КонецЕсли;


Исключение

Инфо = ИнформацияОбОшибке();

ВызватьИсключение Инфо.ПодробноеОписаниеОшибки();
Исключение

Инфо = ИнформацияОбОшибке();

// TODO код проверки на регулярку (ниже) убрать после исправления в движке OneScript
РегуляркаОшибкиПеременныхСреды = Новый РегулярноеВыражение(
"\(System\.ArgumentException\):[^:]+:.*HOME[^:]+:.*home");
Если РегуляркаОшибкиПеременныхСреды.Совпадает(Инфо.Описание) Тогда
Лог.Предупреждение("Возникла ошибка, связанная с переменными среды при старте нового процесса
|%1
|
|Выполняю старт процесса без указания переменных среды.", Инфо.Описание);

Лог.Отладка("Полное описание ошибки:
|%1", Инфо.ПодробноеОписаниеОшибки());

Если КодировкаВывода = Неопределено Тогда
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки);
Иначе
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог, ПерехватыватьПотоки, ПерехватыватьПотоки,
КодировкаВывода);
КонецЕсли;
Иначе
ВызватьИсключение Инфо.ПодробноеОписаниеОшибки();
КонецЕсли;

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

Процесс.Запустить();

Возврат Процесс;
Expand Down Expand Up @@ -505,7 +527,7 @@

Если ПериодОпросаВМиллисекундах <> 0 Тогда
Приостановить(ПериодОпросаВМиллисекундах);
ОбработкаОжиданияПроцесса(Процесс, ЗаписьXML)
ОбработкаОжиданияПроцесса(Процесс, ЗаписьXML);
КонецЕсли;

Пока НЕ Процесс.Завершен Цикл
Expand All @@ -514,7 +536,7 @@
Приостановить(ПериодОпросаВМиллисекундах);
КонецЕсли;

ОбработкаОжиданияПроцесса(Процесс, ЗаписьXML)
ОбработкаОжиданияПроцесса(Процесс, ЗаписьXML);

КонецЦикла;

Expand All @@ -529,7 +551,7 @@
КонецЕсли;

РезультатРаботыПроцесса = ЗаписьXML.Закрыть();
// Если Не НемедленнныйВывод Тогда
// Если Не НемедленныйВывод Тогда
// Лог.Отладка("РезультатРаботыПроцесса %2-----%2%1%2------%2", РезультатРаботыПроцесса, Символы.ПС);
// КонецЕсли;

Expand Down Expand Up @@ -558,7 +580,7 @@
Иначе
ЗаписьXML.ЗаписатьБезОбработки(Рез + Символы.ПС);

Если НемедленнныйВывод Тогда
Если НемедленныйВывод Тогда
Сообщить(Рез);
КонецЕсли;
КонецЕсли;
Expand All @@ -572,7 +594,8 @@
Если ПроверяемКодВозврата Тогда
Если КодВозврата < МинимальныйОжидаемыйКодВозврата или КодВозврата > МаксимальныйОжидаемыйКодВозврата Тогда
Если МинимальныйОжидаемыйКодВозврата <> МаксимальныйОжидаемыйКодВозврата Тогда
ТекстОшибки = СтрШаблон("Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым диапазоном <%3>-<%4>, а это не так!
ТекстОшибки = СтрШаблон(
"Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым диапазоном <%3>-<%4>, а это не так!
|Лог команды:
|%5",
КодВозврата, Приложение, МинимальныйОжидаемыйКодВозврата, МаксимальныйОжидаемыйКодВозврата,
Expand Down Expand Up @@ -613,7 +636,7 @@
ПерехватыватьПотоки = Истина;

ПериодОпросаВМиллисекундах = 100;
НемедленнныйВывод = Ложь;
НемедленныйВывод = Ложь;

ПеременныеСредыПроцесса = ПеременныеСреды();

Expand Down
10 changes: 5 additions & 5 deletions src/КомандныйФайл.os
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

Перем ЭтоWindows;
Перем Лог;
Перем НемедленнныйВывод;
Перем НемедленныйВывод;
Перем КодировкаВывода;

// Получить имя лога продукта
Expand Down Expand Up @@ -143,7 +143,7 @@

Команда = Новый Команда;
Команда.УстановитьКодировкуВывода(КодировкаВывода);
Команда.ПоказыватьВыводНемедленно(НемедленнныйВывод);
Команда.ПоказыватьВыводНемедленно(НемедленныйВывод);

Если ЗначениеЗаполнено(Приложение) Тогда
СтрокаЗапуска = """%1""";
Expand Down Expand Up @@ -191,12 +191,12 @@
// Управляет мгновенным выводом лога команды
//
// Параметры:
// НемедленныйПоказ - Булевое
// НемедленныйПоказ - Булево
// Ложь: показывает вывод только после завершения выполнения команды
// Истина: показ вывода выполняется почти сразу, после появления очередной порции сообщений от команды
//
Процедура ПоказыватьВыводНемедленно(Знач НемедленныйПоказ) Экспорт
НемедленнныйВывод = НемедленныйПоказ;
НемедленныйВывод = НемедленныйПоказ;
КонецПроцедуры

// Получить строку перенаправления ввода-вывода "> файл"
Expand Down Expand Up @@ -243,7 +243,7 @@
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

ТекстФайла = "";
НемедленнныйВывод = Ложь;
НемедленныйВывод = Ложь;
КодировкаВывода = КодировкаТекста.OEM;

Создать();
Expand Down

0 comments on commit 902d1d2

Please sign in to comment.