Skip to content

Commit

Permalink
Убрал мусорные логи #37
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Apr 4, 2019
1 parent 77c595f commit 55e850e
Showing 1 changed file with 68 additions and 70 deletions.
138 changes: 68 additions & 70 deletions src/Команда.os
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@
// Число - код возврата команды
//
Функция Исполнить() Экспорт

ПроверитьВозможностьВыполненияКоманды();

КодВозврата = ЗапуститьИПодождать();

Лог.Отладка("Код возврата равен %1", КодВозврата);
Возврат КодВозврата;

Expand All @@ -51,13 +51,13 @@
// Процесс - объект класса Процесс
//
Функция ЗапуститьПроцесс() Экспорт

ПроверитьВозможностьВыполненияКоманды();

Процесс = ЗапуститьПроцессКоманды();

Лог.Отладка("Запущен процесс с идентификатором <%1>", Процесс.Идентификатор);

Возврат Процесс;

КонецФункции
Expand All @@ -73,7 +73,7 @@

// Установить путь команды.
// Если в пути команды есть пробелы, они обрамляются кавычками
// ВАЖНО: метод принимает именно путь к приложению,
// ВАЖНО: метод принимает именно путь к приложению,
// параметры приложения здесь передавать не следует!!
// Для передачи параметров нужно использовать метод "УстановитьСтрокуЗапуска"
//
Expand Down Expand Up @@ -128,7 +128,7 @@
// Добавить параметр команды.
//
// Параметры:
// Строка - новый единичный параметр или все параметы в одной строке
// Строка - новый единичный параметр или все параметы в одной строке
//
Процедура ДобавитьПараметр(Знач Параметр) Экспорт
Параметры.Добавить(Параметр);
Expand All @@ -149,7 +149,7 @@
// Может использовать для очистки параметров. Для этого нужно передать пустую строку
//
// Параметры:
// Строка - параметы в одной строке
// Строка - параметы в одной строке
//
Процедура УстановитьПараметры(Знач СтрокаПараметров) Экспорт
Параметры = Новый Массив;
Expand Down Expand Up @@ -218,7 +218,7 @@
// ДополнительныеПараметры - Структура - дополнительные параметры передаваемые в обработчик ожидания
//
Процедура УстановитьОбработчикОжидания(Обработчик, Знач ППериодОпросаВМиллисекундах = 5000, ДополнительныеПараметры = Неопределено) Экспорт

ОбработчикОжиданияПроцесса = Обработчик;
ПериодОпросаВМиллисекундах = ППериодОпросаВМиллисекундах;
ДополнительныеПараметрыОбработчика = ДополнительныеПараметры;
Expand All @@ -241,13 +241,13 @@
// МинимальныйОжидаемыйКодВозврата - Число
// МаксимальныйОжидаемыйКодВозврата - Число
//
Процедура УстановитьДиапазонПравильныхКодовВозврата( Знач ПарамМинимальныйОжидаемыйКодВозврата,
Процедура УстановитьДиапазонПравильныхКодовВозврата( Знач ПарамМинимальныйОжидаемыйКодВозврата,
Знач ПарамМаксимальныйОжидаемыйКодВозврата) Экспорт

ПроверяемКодВозврата = Истина;
МинимальныйОжидаемыйКодВозврата = ПарамМинимальныйОжидаемыйКодВозврата;
МаксимальныйОжидаемыйКодВозврата = ПарамМаксимальныйОжидаемыйКодВозврата;

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

// Установить кодировку вывода для выполнения команды.
Expand Down Expand Up @@ -315,13 +315,13 @@
// Строка - Строка, обернутая в кавычки
//
Функция ОбернутьВКавычки(Знач Строка) Экспорт

Если Лев(Строка, 1) = """" и Прав(Строка, 1) = """" Тогда
Возврат Строка;
Иначе
Возврат """" + Строка + """";
КонецЕсли;

КонецФункции

//////////////////////////////////////////////////////////////////////////
Expand All @@ -339,14 +339,14 @@
// Проверяет возможность выполнить команду.
//
Процедура ПроверитьВозможностьВыполненияКоманды()

Ожидаем.Что(ПолучитьРабочийКаталог(), "Рабочий каталог не установлен.").Заполнено();

Лог.Отладка("РабочийКаталог: " + ПолучитьРабочийКаталог());

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

// Запустить команду в операционной системе с ожиданием ее выполнения
// Запустить команду в операционной системе с ожиданием ее выполнения
//
// Параметры:
// Параметры - Массив - Массив строковых аргументов, передаваемых в командную
Expand All @@ -358,22 +358,22 @@
Функция ЗапуститьИПодождать()

СтрокаЗапуска = СформироватьСтрокуЗапускаПроцесса();

ПерехватыватьПотоки = Истина;

Процесс = ЗапуститьПроцессКоманды(ПерехватыватьПотоки);

ПолучитьВыводПокаПроцессИсполняется(Процесс);

КодВозврата = Процесс.КодВозврата;
ПроверитьКодВозврата(КодВозврата);

Возврат КодВозврата;

КонецФункции


// Запустить команду в операционной системе с ожиданием ее выполнения
// Запустить команду в операционной системе с ожиданием ее выполнения
//
// Параметры:
// Параметры - Массив - Массив строковых аргументов, передаваемых в командную
Expand All @@ -385,7 +385,7 @@
Функция ЗапуститьПроцессКоманды(ПерехватыватьПотоки = Ложь)

СтрокаЗапуска = СформироватьСтрокуЗапускаПроцесса();

Попытка

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


Исключение

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

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

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

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

Возврат Процесс;

КонецФункции

Функция СформироватьСтрокуЗапускаПроцесса()
Expand All @@ -417,55 +417,55 @@
СтрокаЗапуска = "";
СтрокаДляЛога = "";
Для Каждого Параметр Из Параметры Цикл

СтрокаЗапуска = СтрокаЗапуска + " " + Параметр;

Если Лев(Параметр, 2) <> "/P" и Лев(Параметр, 25) <> "/ConfigurationRepositoryP" Тогда
СтрокаДляЛога = СтрокаДляЛога + " " + Параметр;
КонецЕсли;

КонецЦикла;

Если НЕ ИспользуетсяЕдинаяСтрокаЗапуска И Найти(ПутьПриложения, " ") > 0 Тогда
ПутьПриложения = ОбернутьВКавычки(ПутьПриложения);
КонецЕсли;
Лог.Отладка("СтрокаЗапуска <%1>", ПутьПриложения + СтрокаДляЛога);
Лог.Отладка("Строка запуска <%1>", ПутьПриложения + СтрокаДляЛога);

СтрокаЗапуска = ПутьПриложения + СтрокаЗапуска;

Если ИспользуемКомандныйПроцессор Тогда
Если ЭтоWindows Тогда
Если ЭтоWindows Тогда
ШаблонЗапуска = "cmd /c %1";
Иначе
ШаблонЗапуска = "sh -c '%1'";
КонецЕсли;

СтрокаЗапуска = СтрШаблон(ШаблонЗапуска, СтрокаЗапуска);
КонецЕсли;
Лог.Отладка("СтрокаЗапуска <%1>", СтрокаЗапуска);
Лог.Отладка("Полная строка запуска <%1>", СтрокаЗапуска);

Возврат СтрокаЗапуска;
КонецФункции // СформироватьСтрокуЗапускаПроцесса()

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

ПрерываниеПроцесса = Ложь;
СтандартнаяОбработка = Истина;
УстановленОбработчикОжиданияПроцесса = НЕ ОбработчикОжиданияПроцесса = Неопределено;

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

Если УстановленОбработчикОжиданияПроцесса Тогда

Обработчик = ОбработчикОжиданияПроцесса;

Лог.Отладка("Вызов обработчика ожидания");
Попытка
Обработчик.ОбработкаОжиданияПроцесса(Процесс,
Обработчик.ОбработкаОжиданияПроцесса(Процесс,
ПрерываниеПроцесса,
ПериодОпросаВМиллисекундах,
ДополнительныеПараметры,
Expand All @@ -478,11 +478,11 @@
КонецЕсли;

Если СтандартнаяОбработка Тогда
Если ПерехватыватьПотоки
И Процесс.ПотокВывода.ЕстьДанные

Если ПерехватыватьПотоки
И Процесс.ПотокВывода.ЕстьДанные
ИЛИ Процесс.ПотокОшибок.ЕстьДанные Тогда

ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокВывода, ЗаписьXML, "В цикле");
ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокОшибок, ЗаписьXML, "В цикле", Истина);

Expand All @@ -493,49 +493,49 @@
Если ПрерываниеПроцесса Тогда

Процесс.Завершить();

КонецЕсли;

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

Процедура ПолучитьВыводПокаПроцессИсполняется(Процесс)

ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();

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

Пока НЕ Процесс.Завершен Цикл

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

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

КонецЦикла;

// Дочитывает данные после завершения ?? Хотя процесс не может завершиться пока есть данные в потоке чтения
Если ПерехватыватьПотоки
И Процесс.ПотокВывода.ЕстьДанные
Если ПерехватыватьПотоки
И Процесс.ПотокВывода.ЕстьДанные
ИЛИ Процесс.ПотокОшибок.ЕстьДанные Тогда

ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокВывода, ЗаписьXML, "В цикле");
ОбработатьОчереднуюСтрокуВывода(Процесс.ПотокОшибок, ЗаписьXML, "В цикле", Истина);

КонецЕсли;

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

Лог.Отладка("Длина вывода %1, количество строк %2", СтрДлина(РезультатРаботыПроцесса),
СтрЧислоСтрок(РезультатРаботыПроцесса));

УстановитьВывод(РезультатРаботыПроцесса);

КонецПроцедуры
Expand All @@ -547,9 +547,7 @@
КонецЕсли;

Если Рез <> "" Тогда
Лог.Отладка("в цикле %2%1", Рез, Символы.ПС);
Если ЗначениеЗаполнено(ПодключенныеЛоги) Тогда
Лог.Отладка(" Вывожу в отдельные логи");
Для каждого ПодключенныйЛог Из ПодключенныеЛоги Цикл
Если ЭтоВыводОшибки Тогда
ПодключенныйЛог.Ошибка(Рез);
Expand All @@ -564,9 +562,9 @@
Сообщить(Рез);
КонецЕсли;
КонецЕсли;

КонецЕсли;

Возврат Рез;
КонецФункции

Expand All @@ -576,13 +574,13 @@
Если МинимальныйОжидаемыйКодВозврата <> МаксимальныйОжидаемыйКодВозврата Тогда
ТекстОшибки = СтрШаблон("Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым диапазоном <%3>-<%4>, а это не так!
|Лог команды:
|%5",
|%5",
КодВозврата, Приложение, МинимальныйОжидаемыйКодВозврата, МаксимальныйОжидаемыйКодВозврата,
ПолучитьВывод());
Иначе
ТекстОшибки = СтрШаблон("Ожидали, что код возврата <%1> команды <%2> совпадет с ожидаемым <%3>, а это не так!
|Лог команды:
|%4",
|%4",
КодВозврата, Приложение, МинимальныйОжидаемыйКодВозврата, ПолучитьВывод());
КонецЕсли;
Ожидаем.Что(КодВозврата, СтрШаблон("%1, вывод %2", ТекстОшибки, ВыводКоманды)).
Expand All @@ -596,9 +594,9 @@
// Задает минимальные настройки.
//
Процедура Инициализация()

Лог = Логирование.ПолучитьЛог(ИмяЛога());

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

Expand All @@ -621,7 +619,7 @@

ПодключенныеЛоги = Новый Массив;
ОбработчикОжиданияПроцесса = Неопределено;

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

Инициализация();
Expand Down

0 comments on commit 55e850e

Please sign in to comment.