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
6 changes: 3 additions & 3 deletions features/cmd/step_definitions/shared.os
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
ВсеШаги.Добавить("ЯСоздаюНовыйОбъектМенеджерсинхронизации");
ВсеШаги.Добавить("ЯУстанавливаюАвторизациюВХранилищеПользователяСПаролем");
ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформы");
ВсеШаги.Добавить("ЯВыполняюВыполняютСинхронизацию");
ВсеШаги.Добавить("ЯВыполняюСинхронизацию");
ВсеШаги.Добавить("ВыводЛогаСодержит");

Возврат ВсеШаги;
Expand Down Expand Up @@ -289,8 +289,8 @@

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

//Я выполняю выполняют синхронизацию
Процедура ЯВыполняюВыполняютСинхронизацию() Экспорт
//Я выполняю синхронизацию
Процедура ЯВыполняюСинхронизацию() Экспорт

МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации");
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников");
Expand Down
6 changes: 3 additions & 3 deletions features/core/step_definitions/shared.os
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
ВсеШаги.Добавить("ЯСоздаюНовыйОбъектМенеджерсинхронизации");
ВсеШаги.Добавить("ЯУстанавливаюАвторизациюВХранилищеПользователяСПаролем");
ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформы");
ВсеШаги.Добавить("ЯВыполняюВыполняютСинхронизацию");
ВсеШаги.Добавить("ЯВыполняюСинхронизацию");
ВсеШаги.Добавить("ВыводЛогаСодержит");

Возврат ВсеШаги;
Expand Down Expand Up @@ -254,8 +254,8 @@

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

//Я выполняю выполняют синхронизацию
Процедура ЯВыполняюВыполняютСинхронизацию() Экспорт
//Я выполняю синхронизацию
Процедура ЯВыполняюСинхронизацию() Экспорт

МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации");
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников");
Expand Down
6 changes: 4 additions & 2 deletions features/core/sync.core.feature
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
Сценарий: Простая синхронизация хранилища с git-репозиторием
Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем ""
И Я устанавливаю версию платформы "8.3"
Когда Я выполняю выполняют синхронизацию
Когда Я выполняю синхронизацию
Тогда Вывод лога содержит "Завершена синхронизации с git"

Сценарий: Cинхронизация хранилища с git-репозиторием c плагинами
Expand All @@ -32,7 +32,9 @@
И Я устанавливаю файл плагина из переменной "ПутьКФайлуПлагина"
И Я загружаю плагины из каталога в переменной "КаталогПлагинов"
И Я подключаю плагины в МенеджерСинхронизации
Когда Я выполняю выполняют синхронизацию
Тогда Вывод лога содержит "ИНФОРМАЦИЯ - Найдена зависимость logos@1.0.1"
# И Вывод лога не содержит "ИНФОРМАЦИЯ - Найдена зависимость 1bdd@1.15.1"
Когда Я выполняю синхронизацию
Тогда Вывод лога содержит "Завершена синхронизации с git"
И Вывод лога содержит "Вызвано событие <ПриАктивизации> для плагина <test_plugin>"

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Использовать opm
#Использовать logos
#Использовать 1commands

Перем Лог; // Объект - логирование операций
Перем ВнутреннийМенеджерУстановкиПакетов; // Объект.МенеджерУстановкиПакетов - для установки пакетов
Expand Down Expand Up @@ -32,7 +33,7 @@

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

// Производит установке пакета плагина по файлу
// Производит установку пакета плагина по файлу
//
// Параметры:
// ПутьКФайлуПлагина - Строка - путь к файлу пакета плагинов
Expand All @@ -48,11 +49,101 @@
ВызватьИсключение ТекстОшибки;
КонецЕсли;

// Необходимо распаковать пакет с плагином во временный каталог и прочитать его манифест,
// и по нему установить зависимости. Сделать это нужно до подключения сценариев.
ВременныйКаталогПлагина = ВременныеФайлы.СоздатьКаталог();
ЧтениеZipФайла = Новый ЧтениеZipФайла(ФайлПлагина.ПолноеИмя);
ЧтениеZipФайла.ИзвлечьВсе(ВременныйКаталогПлагина);
ЧтениеZipФайла = Неопределено;

Зависимости = ПрочитатьЗависимостиПлагинов(ВременныйКаталогПлагина);
ЗависимостиПредставление = ПредставлениеЗависимостей(Зависимости);

УстановитьЗависимостиПлагинов(ЗависимостиПредставление);

УстановщикПлагинов = ПолучитьМенеджерУстановкиПакетов();
УстановщикПлагинов.УстановитьПакетИзАрхива(ПолныйПутьКФайлуПлагина);

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

Функция ПрочитатьЗависимостиПлагинов(Знач КаталогПлагинов)

Результат = Новый Соответствие();

ИмяФайла = "opm-metadata.xml";

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

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

Если Чтение.ЛокальноеИмя <> "opm-metadata" Тогда
Чтение.Закрыть();
ВызватьИсключение СтрШаблон("Файл %1 имеет некорректный формат", ИмяФайла);
КонецЕсли;

Пока Чтение.Прочитать() Цикл

Если Чтение.ТипУзла = ТипУзлаXML.Комментарий Тогда
Продолжить;
КонецЕсли;

Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

Если Чтение.ЛокальноеИмя = "depends-on" Тогда

ЭтоЗависимостьРазработки = Чтение.ЗначениеАтрибута("dev") = "true";
Если ЭтоЗависимостьРазработки Тогда
Продолжить;
КонецЕсли;

ИмяПакета = Чтение.ЗначениеАтрибута("name");
ВерсияПакета = Чтение.ЗначениеАтрибута("version");

// TODO: обработать ситуацию, когда разные плагины зависят от разных версий одного пакета

Check notice on line 104 in src/core/Классы/internal/Классы/УстановщикПлагинов.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

src/core/Классы/internal/Классы/УстановщикПлагинов.os#L104

Найден служебный тег "// TODO"
Результат.Вставить(ИмяПакета, ВерсияПакета);
Лог.Информация("Найдена зависимость %1@%2", ИмяПакета, ВерсияПакета);
Чтение.Прочитать(); // в конец элемента
КонецЕсли;

КонецЕсли;

КонецЦикла;

Чтение.Закрыть();

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

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

Функция ПредставлениеЗависимостей(Зависимости)

Результат = "";

Для Каждого КлючЗначение Из Зависимости Цикл
Результат = Результат + СтрШаблон("%1@%2 ", КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;

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

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

Процедура УстановитьЗависимостиПлагинов(ЗависимостиПредставление)

Команда = Новый Команда;
Команда.УстановитьКоманду("opm");
Команда.ДобавитьПараметр("install");
Команда.ДобавитьПараметр(ЗависимостиПредставление);

КодВозврата = Команда.Исполнить();

Если КодВозврата <> 0 Тогда
ВызватьИсключение Команда.ПолучитьВыводКоманды();
КонецЕсли;

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

// Производит установку пакета плагина по имени с хаба
//
// Параметры:
Expand Down
Loading