Skip to content

Commit

Permalink
Merge pull request #4 from yukon39/develop
Browse files Browse the repository at this point in the history
Новая версия 0.5.0
  • Loading branch information
yukon39 authored Apr 26, 2020
2 parents bd2d0d1 + 7b54eb8 commit ef73b71
Show file tree
Hide file tree
Showing 6 changed files with 247 additions and 67 deletions.
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
* text=auto

*.os text
*.bsl text
*.xml text
*.mdo text
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
Примеры:
* Конвертация замеров для модулей конфигурации в формате выгрузки конфигуратора:

`coverage-cli convert --input coverage.csv --input coverage.json --sources src/cf --format XML`
`coverage-cli convert --input coverage.csv --output coverage.json --sources src/cf --format XML`

* Конвертация замеров для модулей конфигурации в формате выгрузки EDT:

`coverage-cli convert --input coverage.csv --input coverage.json --sources ProjectName/src --format EDT`
`coverage-cli convert --input coverage.csv --output coverage.json --sources ProjectName/src --format EDT`

* Конвертация замеров для модулей конфигурации и модулей расширения поддерживается через конфигурационный файл (пример файла можно посмотреть в [`/examples`](examples):

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@

#Использовать fs

Перем КешМодулей;
Перем КаталогПроекта;
Перем КаталогИсходныхФайлов;
Перем ОбработчикиФормата;
Перем КлючХеширования;
Перем Лог;

#Область ПрограммныйИнтерфейс

Expand All @@ -16,7 +19,7 @@
Обработчик = ОбработчикиФормата.Получить(ВидПрограммногоМодуля);
Если Обработчик = Неопределено Тогда
ТестСообщения = СтрШаблон("Не найден обработчик для вида программного модуля ""%1""", ВидПрограммногоМодуля);
ПараметрыПриложения.Лог().Ошибка(ТестСообщения);
Лог.Ошибка(ТестСообщения);
Возврат Неопределено;
КонецЕсли;

Expand All @@ -30,7 +33,14 @@
КаталогИсходников = Новый Файл(ПутьКИсходнымФайлам);
ПутьПрограммногоМодуля = Обработчик.Выполнить(КаталогИсходников.ПолноеИмя, ИДПрограммногоМодуля);
Если ТипЗнч(ПутьПрограммногоМодуля) = Тип("Строка") Тогда
ПутьВПроекте = ОтносительныйПуть(ПутьПрограммногоМодуля);

ПутьВПроекте = ФС.ОтносительныйПуть(КаталогПроекта, ПутьПрограммногоМодуля);
Если Не ФС.ФайлСуществует(ПутьПрограммногоМодуля) Тогда
ТестСообщения = СтрШаблон("Программный модуль не существует ""%1""", ПутьВПроекте);
Лог.Ошибка(ТестСообщения);
Возврат Неопределено;
КонецЕсли;

ЗначениеКеша = ПрограммныйМодуль(ПутьВПроекте);
КешМодулей.Вставить(КлючКеша, ЗначениеКеша);
Возврат ЗначениеКеша;
Expand All @@ -47,7 +57,9 @@
Процедура ПриСозданииОбъекта(ПараметрКаталогПроекта, ПараметрКаталогИсходныхФайлов, ФорматИсходныхФайлов) Экспорт

Если ФорматИсходныхФайлов = ФорматыИсходныхФайлов.EDT Тогда
ОбработчикиФормата = ОбработчикиФорматаEDT.ОбработчикиФормата();
ОбработчикиФормата = ОбработчикиФорматов.ОбработчикиФормата(ОбработчикиФорматаEDT);
ИначеЕсли ФорматИсходныхФайлов = ФорматыИсходныхФайлов.XML Тогда
ОбработчикиФормата = ОбработчикиФорматов.ОбработчикиФормата(ОбработчикиФорматаXML);
Иначе
ВызватьИсключение СтрШаблон("Неизвестный формат исходных файлов: ""%1""", ФорматИсходныхФайлов);
КонецЕсли;
Expand All @@ -57,16 +69,14 @@

КешМодулей = Новый Соответствие;

Лог = ПараметрыПриложения.Лог();

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ОтносительныйПуть(ПолныйПуть)
Возврат Сред(ПолныйПуть, СтрДлина(КаталогПроекта)+2);
КонецФункции

Функция ПрограммныйМодуль(ПутьПрограммногоМодуля)

ПрограммныйМодуль = Новый Структура;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,18 @@

Перем ОбработчикиФормата;
Перем Лог;

#Область ПрограммныйИнтерфейс

Функция ОбработчикиФормата() Экспорт

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

Возврат ОбработчикиФормата;

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

#КонецОбласти

#Область ОбработчикиДелегатов

Функция НайтиМодульУправляемогоПриложения(ПутьКИсходнымФайлам, ИдентификаторПрограммногоМодуля) Экспорт

КаталогОбъектаМетаданных = НайтиОбъектМетаданных(ПутьКИсходнымФайлам,
"Configuration", ИдентификаторПрограммногоМодуля);

Если КаталогОбъектаМетаданных = Неопределено Тогда
ОбработчикиФорматов.НеНайденМодульУправляемогоПриложения(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;
КонецЕсли;

Возврат ОбъединитьПути(ПутьКИсходнымФайлам, "Configuration", "ManagedApplicationModule.bsl");

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

Функция НайтиОбщийМодуль(ПутьКИсходнымФайлам, ИдентификаторПрограммногоМодуля) Экспорт
Expand All @@ -28,13 +21,8 @@
"CommonModules", ИдентификаторПрограммногоМодуля);

Если КаталогОбъектаМетаданных = Неопределено Тогда

ТекстСообщения = СтрШаблон("Не найден общий модуль с идентификатором ""%1""",
ИдентификаторПрограммногоМодуля);
ПараметрыПриложения.Лог().Ошибка(ТекстСообщения);

ОбработчикиФорматов.НеНайденОбщийМодуль(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;

КонецЕсли;

Возврат ОбъединитьПути(КаталогОбъектаМетаданных.ПолноеИмя, "Module.bsl");
Expand All @@ -51,13 +39,8 @@
КаталогиТиповОбъектовМетаданных, ИдентификаторПрограммногоМодуля);

Если КаталогОбъектаМетаданных = Неопределено Тогда

ТекстСообщения = СтрШаблон("Не найден модуль менеджера с идентификатором ""%1""",
ИдентификаторПрограммногоМодуля);
ПараметрыПриложения.Лог().Ошибка(ТекстСообщения);

ОбработчикиФорматов.НеНайденМодульМенеджера(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;

КонецЕсли;

Возврат ОбъединитьПути(КаталогОбъектаМетаданных.ПолноеИмя, "ManagerModule.bsl");
Expand All @@ -76,13 +59,8 @@
КаталогиТиповОбъектовМетаданных, ИдентификаторПрограммногоМодуля);

Если КаталогОбъектаМетаданных = Неопределено Тогда

ТекстСообщения = СтрШаблон("Не найден модуль объекта с идентификатором ""%1""",
ИдентификаторПрограммногоМодуля);
ПараметрыПриложения.Лог().Ошибка(ТекстСообщения);

ОбработчикиФорматов.НеНайденМодульОбъекта(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;

КонецЕсли;

Возврат ОбъединитьПути(КаталогОбъектаМетаданных.ПолноеИмя, "ObjectModule.bsl");
Expand All @@ -93,29 +71,6 @@

#Область СлужебныеПроцедурыИФункции

Функция НовыйОбработчикиФормата()

Обработчики = Новый Соответствие;
ДобавитьДелегата(Обработчики,
ВидыПрограммныхМодулей.МодульУправляемогоПриложения, "НайтиМодульУправляемогоПриложения");
ДобавитьДелегата(Обработчики,
ВидыПрограммныхМодулей.ОбщийМодуль, "НайтиОбщийМодуль");
ДобавитьДелегата(Обработчики,
ВидыПрограммныхМодулей.МодульОбъекта, "НайтиМодульОбъекта");
ДобавитьДелегата(Обработчики,
ВидыПрограммныхМодулей.МодульМенеджера, "НайтиМодульМенеджера");

Возврат Обработчики;

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

Процедура ДобавитьДелегата(Обработчики, ВидПрограммногоМодуля, ИмяДелегата)

Делегат = Новый Действие(ЭтотОбъект, ИмяДелегата);
Обработчики.Вставить(ВидПрограммногоМодуля, Делегат);

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

Функция ФайлОбъектаМетаданных(КаталогОбъектаМетаданных)

ФайлыМетаданных = НайтиФайлы(КаталогОбъектаМетаданных, "*.mdo");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@

#Область ОбработчикиДелегатов

Функция НайтиМодульУправляемогоПриложения(ПутьКИсходнымФайлам, ИдентификаторПрограммногоМодуля) Экспорт

ФайлОбъектаМетаданных = НайтиОбъектМетаданных(ПутьКИсходнымФайлам, ".", ИдентификаторПрограммногоМодуля);
Если ФайлОбъектаМетаданных = Неопределено Тогда
ОбработчикиФорматов.НеНайденМодульУправляемогоПриложения(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;
КонецЕсли;

Возврат ОбъединитьПути(ПутьКИсходнымФайлам, "Ext", "ManagedApplicationModule.bsl");

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

Функция НайтиОбщийМодуль(ПутьКИсходнымФайлам, ИдентификаторПрограммногоМодуля) Экспорт

ФайлОбъектаМетаданных = НайтиОбъектМетаданных(ПутьКИсходнымФайлам,
"CommonModules", ИдентификаторПрограммногоМодуля);

Если ФайлОбъектаМетаданных = Неопределено Тогда
ОбработчикиФорматов.НеНайденОбщийМодуль(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;
КонецЕсли;

КаталогОбъектаМетаданных = КаталогОбъектаМетаданных(ФайлОбъектаМетаданных);

Возврат ОбъединитьПути(КаталогОбъектаМетаданных, "Ext", "Module.bsl");

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

Функция НайтиМодульМенеджера(ПутьКИсходнымФайлам, ИдентификаторПрограммногоМодуля) Экспорт

КаталогиТиповОбъектовМетаданных = Новый Массив;
КаталогиТиповОбъектовМетаданных.Добавить("DataProcessors");
КаталогиТиповОбъектовМетаданных.Добавить("InformationRegisters");

ФайлОбъектаМетаданных = НайтиОбъектМетаданныхВКаталогах(ПутьКИсходнымФайлам,
КаталогиТиповОбъектовМетаданных, ИдентификаторПрограммногоМодуля);

Если ФайлОбъектаМетаданных = Неопределено Тогда
ОбработчикиФорматов.НеНайденМодульМенеджера(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;
КонецЕсли;

КаталогОбъектаМетаданных = КаталогОбъектаМетаданных(ФайлОбъектаМетаданных);

Возврат ОбъединитьПути(КаталогОбъектаМетаданных, "Ext", "ManagerModule.bsl");

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

Функция НайтиМодульОбъекта(ПутьКИсходнымФайлам, ИдентификаторПрограммногоМодуля) Экспорт

КаталогиТиповОбъектовМетаданных = Новый Массив;
КаталогиТиповОбъектовМетаданных.Добавить("Catalogs");
КаталогиТиповОбъектовМетаданных.Добавить("Documents");
КаталогиТиповОбъектовМетаданных.Добавить("DataProcessors");
КаталогиТиповОбъектовМетаданных.Добавить("ExchangePlans");

ФайлОбъектаМетаданных = НайтиОбъектМетаданныхВКаталогах(ПутьКИсходнымФайлам,
КаталогиТиповОбъектовМетаданных, ИдентификаторПрограммногоМодуля);

Если ФайлОбъектаМетаданных = Неопределено Тогда
ОбработчикиФорматов.НеНайденМодульОбъекта(ИдентификаторПрограммногоМодуля);
Возврат Неопределено;
КонецЕсли;

КаталогОбъектаМетаданных = КаталогОбъектаМетаданных(ФайлОбъектаМетаданных);
Возврат ОбъединитьПути(КаталогОбъектаМетаданных, "Ext", "ObjectModule.bsl");

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ИдентификаторОбъектаМетаданных(ФайлОбъектаМетаданных)

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ФайлОбъектаМетаданных.ПолноеИмя);
ЧтениеXML.ПерейтиКСодержимому();
ЧтениеXML.Прочитать();
ИдентификаторМетаданных = ЧтениеXML.ЗначениеАтрибута("uuid");
ЧтениеXML.Закрыть();

Возврат ИдентификаторМетаданных;

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

Функция НайтиОбъектМетаданныхВКаталогах(ПутьКИсходнымФайлам, КаталогиТиповОбъектовМетаданных, ИдентификаторПрограммногоМодуля)

Результат = Неопределено;

Для Каждого КаталогТипаОбъектовМетаданных Из КаталогиТиповОбъектовМетаданных Цикл

Результат = НайтиОбъектМетаданных(ПутьКИсходнымФайлам,
КаталогТипаОбъектовМетаданных, ИдентификаторПрограммногоМодуля);

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

КонецЦикла;

Возврат Результат;

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

Функция НайтиОбъектМетаданных(ПутьКИсходнымФайлам, ПодКаталогОбъектовМетаданных, ИдентификаторПрограммногоМодуля)

Результат = Неопределено;

КаталогПоиска = ОбъединитьПути(ПутьКИсходнымФайлам, ПодКаталогОбъектовМетаданных);
ФайлыОбъектовМетаданных = НайтиФайлы(КаталогПоиска, "*.xml");
Для Каждого ФайлОбъектаМетаданных Из ФайлыОбъектовМетаданных Цикл

ИдентификаторОбъектаМетаданных = ИдентификаторОбъектаМетаданных(ФайлОбъектаМетаданных);

Если ИдентификаторОбъектаМетаданных = ИдентификаторПрограммногоМодуля Тогда
Результат = ФайлОбъектаМетаданных;
Прервать;
КонецЕсли;

КонецЦикла;

Возврат Результат;

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

Функция КаталогОбъектаМетаданных(ФайлОбъектаМетаданных)
Возврат ОбъединитьПути(ФайлОбъектаМетаданных.Путь, ФайлОбъектаМетаданных.ИмяБезРасширения);
КонецФункции

#КонецОбласти
Loading

0 comments on commit ef73b71

Please sign in to comment.