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
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,13 @@

Описание.Имя("vanessa-runner")
.Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта())
.ВерсияСреды("1.9.0")
.ВерсияСреды("1.9.0")

.ЗависитОт("logos", "1.4.0")
.ЗависитОт("cmdline", "1.0.0")
.ЗависитОт("tempfiles", "1.0.0")
.ЗависитОт("asserts", "1.3.0")
.ЗависитОт("v8runner", "1.9.0")
.ЗависитОт("v8runner", "1.10.0")
.ЗависитОт("v8find", "0.2.0")
.ЗависитОт("strings", "0.4.1")
.ЗависитОт("json", "1.1.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ТекстОписания =
" Обновление конфигурации, находящейся на поддержке, или объединение конфигурации с файлом (с использованием файла настроек).
|";
" Обновление конфигурации, находящейся на поддержке, или объединение конфигурации с файлом (с использованием файла настроек).";

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды,
ТекстОписания);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Формирование отчета о сравнении основной конфигурации с файлом или двух файлов конфигураций
//
// Служебный модуль с набором методов работы с командами приложения
//
// TODO добавить тесты\фичи
//
// Структура модуля реализована в соответствии с рекомендациями oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////////////////////////////////////

#Использовать logos
#Использовать v8runner

Перем Лог;
Перем МенеджерКонфигуратора;


///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ТекстОписания =
" Формирование файла отчета сравнения конфигураций.
|";

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, ТекстОписания);

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--secondFile",
"Путь к файлу cf/cfe, с которым идёт сравнение конфигурации. Обязательный параметр.");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--reportFile",
"Путь к файлу, где должен быть сохранён отчет. Обязательный параметр.");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--reportType",
"Тип отчёта о сравнении: по-умолчанию Full (полный) или указать Brief (краткий)");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--reportFormat",
"Формат файла отчета: по-умолчанию txt или указать mxl");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--extensionName",
"Имя расширения, если надо сравнить его вместо основной конфигурации");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--firstFile",
"Путь к первому файлу cf/cfe: если не указать - используется основная конфигурация (расширение)");

Парсер.ДобавитьКоманду(ОписаниеКоманды);

КонецПроцедуры // ЗарегистрироватьКоманду

// Выполняет логику команды
//
// Параметры:
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно)
//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт

Попытка
Лог = ДополнительныеПараметры.Лог;
Исключение
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
КонецПопытки;

Лог.Информация("Начинаю сравнение конфигураций");

ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];

ПутьКФайлуКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--secondFile"]);
ПутьКОтчету = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--reportFile"]);
ТипОтчета = ПараметрыКоманды["--reportType"];
ФорматОтчета = ПараметрыКоманды["--reportFormat"];
ИмяРасширения = ПараметрыКоманды["--extensionName"];
ПутьКФайлуПервойКонфигурации = ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--firstFile"]);

Лог.Отладка("ПутьКФайлуКонфигурации %1", ПутьКФайлуКонфигурации);
Лог.Отладка("ТипОтчета %1", ТипОтчета);
Лог.Отладка("ФорматОтчета %1", ФорматОтчета);
Лог.Отладка("ПутьКОтчету %1", ПутьКОтчету);
Лог.Отладка("ИмяРасширения %1", ИмяРасширения);
Лог.Отладка("ПутьКФайлуПервойКонфигурации %1", ПутьКФайлуПервойКонфигурации);

Если Не ЗначениеЗаполнено(ПутьКФайлуКонфигурации) Тогда
ВызватьИсключение "Необходимо задать путь к файлу cf/cfe, с которым идёт сравнение,
|Параметр --secondFile является обязательным.";
КонецЕсли;

Если Не ЗначениеЗаполнено(ПутьКОтчету) Тогда
ВызватьИсключение "Необходимо задать путь к файлу сохранения отчета,
|Параметр --reportFile является обязательным.";
КонецЕсли;

МенеджерКонфигуратора = Новый МенеджерКонфигуратора;

Попытка
МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды);

УправлениеКонфигуратором = МенеджерКонфигуратора.УправлениеКонфигуратором();

Если ЗначениеЗаполнено(ТипОтчета) И НРег(ТипОтчета) <> "full" Тогда
ТипОтчета = ТипыОтчетовОСравнении.Краткий;
Иначе
ТипОтчета = ТипыОтчетовОСравнении.Полный;
КонецЕсли;

Если ЗначениеЗаполнено(ФорматОтчета) И НРег(ФорматОтчета) <> "txt" Тогда
ФорматОтчета = "mxl";
Иначе
ФорматОтчета = "txt";
КонецЕсли;

Если НЕ ЗначениеЗаполнено(ПутьКФайлуПервойКонфигурации) Тогда
ПутьКФайлуПервойКонфигурации = Неопределено;
КонецЕсли;

УправлениеКонфигуратором.ПолучитьОтчетОСравненииКонфигурацииСФайлом(ПутьКФайлуКонфигурации, ПутьКОтчету,
ТипОтчета, ФорматОтчета, ИмяРасширения, ПутьКФайлуПервойКонфигурации);

Лог.Информация(УправлениеКонфигуратором.ВыводКоманды());

Лог.Информация("Успешно завершено сравнение конфигураций");

Исключение
МенеджерКонфигуратора.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;

МенеджерКонфигуратора.Деструктор();

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

КонецФункции // ВыполнитьКоманду
2 changes: 2 additions & 0 deletions src/Модули/ПараметрыСистемы.os
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
мВозможныеКоманды.Вставить("ЗагрузитьФайлКонфигурации", "load");
мВозможныеКоманды.Вставить("ОбъединитьСФайломКонфигурации", "merge");
мВозможныеКоманды.Вставить("ОбновитьКонфигурацию", "update");
мВозможныеКоманды.Вставить("СравнитьКонфигурации", "compare");

мВозможныеКоманды.Вставить("УправлениеСеансами", "session");
мВозможныеКоманды.Вставить("УправлениеРегламентнымиЗаданиями", "scheduledjobs");
Expand Down Expand Up @@ -165,6 +166,7 @@
КлассыРеализацииКоманд[ВозможныеКоманды().ЗагрузитьФайлКонфигурации] = "КомандаЗагрузитьФайлКонфигурации";
КлассыРеализацииКоманд[ВозможныеКоманды().ОбъединитьСФайломКонфигурации] = "КомандаОбъединитьСФайломКонфигурации";
КлассыРеализацииКоманд[ВозможныеКоманды().ОбновитьКонфигурацию] = "КомандаОбновитьКонфигурацию";
КлассыРеализацииКоманд[ВозможныеКоманды().СравнитьКонфигурации] = "КомандаСравнитьКонфигурации";

КлассыРеализацииКоманд[ВозможныеКоманды().УправлениеСеансами] = "КомандаУправлениеСеансами";
КлассыРеализацииКоманд[ВозможныеКоманды().УправлениеРегламентнымиЗаданиями] = "КомандаУправлениеСеансами";
Expand Down