Skip to content

Commit b75dacc

Browse files
committed
install plugins deps
1 parent 908691f commit b75dacc

4 files changed

Lines changed: 103 additions & 9 deletions

File tree

features/cmd/step_definitions/shared.os

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
ВсеШаги.Добавить("ЯСоздаюНовыйОбъектМенеджерсинхронизации");
4242
ВсеШаги.Добавить("ЯУстанавливаюАвторизациюВХранилищеПользователяСПаролем");
4343
ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформы");
44-
ВсеШаги.Добавить("ЯВыполняюВыполняютСинхронизацию");
44+
ВсеШаги.Добавить("ЯВыполняюСинхронизацию");
4545
ВсеШаги.Добавить("ВыводЛогаСодержит");
4646

4747
Возврат ВсеШаги;
@@ -289,8 +289,8 @@
289289

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

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

295295
МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации");
296296
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников");

features/core/step_definitions/shared.os

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
ВсеШаги.Добавить("ЯСоздаюНовыйОбъектМенеджерсинхронизации");
4242
ВсеШаги.Добавить("ЯУстанавливаюАвторизациюВХранилищеПользователяСПаролем");
4343
ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформы");
44-
ВсеШаги.Добавить("ЯВыполняюВыполняютСинхронизацию");
44+
ВсеШаги.Добавить("ЯВыполняюСинхронизацию");
4545
ВсеШаги.Добавить("ВыводЛогаСодержит");
4646

4747
Возврат ВсеШаги;
@@ -254,8 +254,8 @@
254254

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

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

260260
МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации");
261261
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников");

features/core/sync.core.feature

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
Сценарий: Простая синхронизация хранилища с git-репозиторием
2121
Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем ""
2222
И Я устанавливаю версию платформы "8.3"
23-
Когда Я выполняю выполняют синхронизацию
23+
Когда Я выполняю синхронизацию
2424
Тогда Вывод лога содержит "Завершена синхронизации с git"
2525

2626
Сценарий: Cинхронизация хранилища с git-репозиторием c плагинами
@@ -32,7 +32,9 @@
3232
И Я устанавливаю файл плагина из переменной "ПутьКФайлуПлагина"
3333
И Я загружаю плагины из каталога в переменной "КаталогПлагинов"
3434
И Я подключаю плагины в МенеджерСинхронизации
35-
Когда Я выполняю выполняют синхронизацию
35+
Тогда Вывод лога содержит "ИНФОРМАЦИЯ - Найдена зависимость [email protected]"
36+
# И Вывод лога не содержит "ИНФОРМАЦИЯ - Найдена зависимость [email protected]"
37+
Когда Я выполняю синхронизацию
3638
Тогда Вывод лога содержит "Завершена синхронизации с git"
3739
И Вывод лога содержит "Вызвано событие <ПриАктивизации> для плагина <test_plugin>"
3840

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

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#Использовать opm
22
#Использовать logos
3+
#Использовать 1commands
34

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

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

35-
// Производит установке пакета плагина по файлу
36+
// Производит установку пакета плагина по файлу
3637
//
3738
// Параметры:
3839
// ПутьКФайлуПлагина - Строка - путь к файлу пакета плагинов
@@ -48,11 +49,102 @@
4849
ВызватьИсключение ТекстОшибки;
4950
КонецЕсли;
5051

52+
// Необходимо распаковать пакет с плагином во временный каталог и прочитать его манифест,
53+
// и по нему установить зависимости. Сделать это нужно до подключения сценариев.
54+
ВременныйКаталогПлагина = ВременныеФайлы.СоздатьКаталог();
55+
ЧтениеZipФайла = Новый ЧтениеZipФайла(ПутьКФайлуПлагина);
56+
ЧтениеZipФайла.ИзвлечьВсе(ВременныйКаталогПлагина);
57+
ЧтениеZipФайла = Неопределено;
58+
59+
Зависимости = ПрочитатьЗависимостиПлагинов(ВременныйКаталогПлагина);
60+
ЗависимостиПредставление = ПредставлениеЗависимостей(Зависимости);
61+
62+
УстановитьЗависимостиПлагинов(ЗависимостиПредставление);
63+
5164
УстановщикПлагинов = ПолучитьМенеджерУстановкиПакетов();
5265
УстановщикПлагинов.УстановитьПакетИзАрхива(ПолныйПутьКФайлуПлагина);
5366

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

69+
70+
Функция ПрочитатьЗависимостиПлагинов(Знач КаталогПлагинов)
71+
72+
Результат = Новый Соответствие();
73+
74+
ИмяФайла = "opm-metadata.xml";
75+
76+
ФайлМетаданных = Новый Файл(ОбъединитьПути(КаталогПлагинов, ИмяФайла));
77+
78+
Чтение = Новый ЧтениеXML;
79+
Чтение.ОткрытьФайл(ФайлМетаданных.ПолноеИмя);
80+
Чтение.ПерейтиКСодержимому();
81+
82+
Если Чтение.ЛокальноеИмя <> "opm-metadata" Тогда
83+
Чтение.Закрыть();
84+
ВызватьИсключение СтрШаблон("Файл %1 имеет некорректный формат", ИмяФайла);
85+
КонецЕсли;
86+
87+
Пока Чтение.Прочитать() Цикл
88+
89+
Если Чтение.ТипУзла = ТипУзлаXML.Комментарий Тогда
90+
Продолжить;
91+
КонецЕсли;
92+
93+
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
94+
95+
Если Чтение.ЛокальноеИмя = "depends-on" Тогда
96+
97+
ЭтоЗависимостьРазработки = Чтение.ЗначениеАтрибута("dev") = "true";
98+
Если ЭтоЗависимостьРазработки Тогда
99+
Продолжить;
100+
КонецЕсли;
101+
102+
ИмяПакета = Чтение.ЗначениеАтрибута("name");
103+
ВерсияПакета = Чтение.ЗначениеАтрибута("version");
104+
105+
// TODO: обработать ситуацию, когда разные плагины зависят от разных версий одного пакета
106+
Результат.Вставить(ИмяПакета, ВерсияПакета);
107+
Лог.Информация("Найдена зависимость %1@%2", ИмяПакета, ВерсияПакета);
108+
Чтение.Прочитать(); // в конец элемента
109+
КонецЕсли;
110+
111+
КонецЕсли;
112+
113+
КонецЦикла;
114+
115+
Чтение.Закрыть();
116+
117+
Возврат Результат;
118+
119+
КонецФункции
120+
121+
Функция ПредставлениеЗависимостей(Зависимости)
122+
123+
Результат = "";
124+
125+
Для Каждого КлючЗначение Из Зависимости Цикл
126+
Результат = Результат + СтрШаблон("%1@%2 ", КлючЗначение.Ключ, КлючЗначение.Значение);
127+
КонецЦикла;
128+
129+
Возврат Результат;
130+
131+
КонецФункции
132+
133+
Процедура УстановитьЗависимостиПлагинов(ЗависимостиПредставление)
134+
135+
Команда = Новый Команда;
136+
Команда.УстановитьКоманду("opm");
137+
Команда.ДобавитьПараметр("install");
138+
Команда.ДобавитьПараметр(ЗависимостиПредставление);
139+
140+
КодВозврата = Команда.Исполнить();
141+
142+
Если КодВозврата <> 0 Тогда
143+
ВызватьИсключение Команда.ПолучитьВыводКоманды();
144+
КонецЕсли;
145+
146+
КонецПроцедуры
147+
56148
// Производит установку пакета плагина по имени с хаба
57149
//
58150
// Параметры:

0 commit comments

Comments
 (0)