Skip to content

Commit f5a7492

Browse files
committed
Возобновил работу событий установки #138
Доработал фичу для проверки отработки событий установки пакета
1 parent a5dfe17 commit f5a7492

File tree

4 files changed

+140
-21
lines changed

4 files changed

+140
-21
lines changed

features/install-file.feature

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
И Я устанавливаю путь выполнения команды "opm" к текущей библиотеке
1313
И Я создаю временный каталог и сохраняю его в переменной "КаталогСборкиПакета"
1414
И Я создаю временный каталог и сохраняю его в переменной "РабочийКаталог"
15+
# И я включаю полную отладку логов пакетов OneScript
1516
И Я выполняю сборку пакета "fixtures/testpackage" в каталог из переменной "КаталогСборкиПакета"
1617
И Я сохраняю файл пакета из каталога "КаталогСборкиПакета" в переменную "ИмяФайлаПакета"
1718

@@ -21,7 +22,14 @@
2122
И Я добавляю параметр "--local" для команды "opm"
2223
И Я добавляю опцию "-f" для команды "opm" из переменной "ИмяФайлаПакета"
2324
Когда Я выполняю команду "opm"
25+
И Я показываю вывод команды
2426
Тогда Вывод команды "opm" содержит "ИНФОРМАЦИЯ - Установка завершена"
27+
И я вижу в консоли вывод
28+
# | Событие установки - ПередСборкой - рабочий каталог |
29+
# | Событие установки - ПослеСборки - рабочий каталог |
30+
# | Событие установки - ПриСборке - рабочий каталог |
31+
| Событие установки - ПередУстановкой - КаталогУстановкиПакета |
32+
| Событие установки - ПриУстановке - КаталогУстановкиПакета |
2533
И Вывод команды "opm" не содержит "Внешнее исключение"
2634
И Код возврата команды "opm" равен 0
2735
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules"
Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,80 @@
1-

1+
////////////////////////////////////////////////////////////
2+
// Описание пакета для сборки и установки
3+
// Полную документацию см. на hub.oscript.io/packaging
4+
//
5+
6+
///////////////////////////////////////////////////////////////////
7+
// Процедуры установки пакета с клиентской машины
8+
///////////////////////////////////////////////////////////////////
9+
10+
// Вызывается пакетным менеджером перед установкой пакета на клиентскую машину.
11+
//
12+
// Параметры:
13+
// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
14+
// ЧтениеZipФайла - ЧтениеZipФайла. Архив пакета.
15+
//
16+
Процедура ПередУстановкой(Знач КаталогУстановкиПакета, Знач ЧтениеZipФайла) Экспорт
17+
Сообщить(СтрШаблон("Событие установки - ПередУстановкой - КаталогУстановкиПакета %1",
18+
КаталогУстановкиПакета));
19+
КонецПроцедуры
20+
21+
// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину.
22+
//
23+
// Параметры:
24+
// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
25+
//
26+
Процедура ПриУстановке(Знач КаталогУстановкиПакета, СтандартнаяОбработка) Экспорт
27+
28+
Сообщить(СтрШаблон("Событие установки - ПриУстановке - КаталогУстановкиПакета %1",
29+
КаталогУстановкиПакета));
30+
31+
КонецПроцедуры
32+
33+
///////////////////////////////////////////////////////////////////
34+
// Процедуры сборки пакета
35+
///////////////////////////////////////////////////////////////////
36+
37+
38+
// Вызывается пакетным менеджером перед началом сборки пакета.
39+
//
40+
// Параметры:
41+
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
42+
//
43+
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
44+
45+
Сообщить(СтрШаблон("Событие установки - ПередСборкой - рабочий каталог %1",
46+
РабочийКаталог));
47+
48+
КонецПроцедуры
49+
50+
// Вызывается пакетным менеджером после помещения файлов в пакет.
51+
//
52+
// Параметры:
53+
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
54+
// АрхивПакета - ЗаписьZIPФайла - ZIP-архив с содержимым пакета (включаемые файлы).
55+
//
56+
Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт
57+
58+
Сообщить(СтрШаблон("Событие установки - ПриСборке - рабочий каталог %1",
59+
РабочийКаталог));
60+
61+
КонецПроцедуры
62+
63+
64+
// Вызывается пакетным менеджером после сборки пакета.
65+
//
66+
// Параметры:
67+
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
68+
// ПутьКФайлуПакета - Строка - Полный путь к собранному файлу пакета.
69+
//
70+
Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт
71+
72+
Сообщить(СтрШаблон("Событие установки - ПослеСборки - рабочий каталог %1, ПутьКФайлуПакета %2",
73+
РабочийКаталог, ПутьКФайлуПакета));
74+
75+
КонецПроцедуры
76+
277
Описание.Имя("test")
378
.Версия("0.3.1")
79+
.ВключитьФайл("packagedef")
480
.ВключитьФайл("folder");

features/step_definitions/shared.os

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@
66
// Метод выдает список шагов, реализованных в данном файле-шагов
77
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
88
БДД = КонтекстФреймворкаBDD;
9-
9+
1010
ВсеШаги = Новый Массив;
11-
11+
1212
ВсеШаги.Добавить("ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке");
1313
ВсеШаги.Добавить("ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог");
1414
ВсеШаги.Добавить("ЯДобавляюПараметрыДляКоманды");
1515
ВсеШаги.Добавить("ЯДобавляюОпциюДляКомандыИзПеременной");
1616
ВсеШаги.Добавить("ЯДобавляюАргументДляКомандыИзПеременной");
1717
ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкруженияИзПеременной");
1818
ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной");
19+
ВсеШаги.Добавить("ЯВключаюПолнуюОтладкуЛоговПакетовOnescript");
1920

20-
2121
Возврат ВсеШаги;
2222
КонецФункции
2323

@@ -35,7 +35,7 @@
3535

3636
//Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов"
3737
Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной(Знач ИмяПеременной) Экспорт
38-
38+
3939
ВременныйКаталог = ВременныеФайлы.СоздатьКаталог();
4040

4141
БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйКаталог);
@@ -47,17 +47,17 @@
4747

4848
ЗначениеПеременной = БДД.ПолучитьИзКонтекста(КаталогХранилища1С);
4949
УстановитьПеременнуюСреды(ИмяПеременной, ЗначениеПеременной);
50-
50+
5151
КонецПроцедуры
5252

5353
//Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория"
5454
Процедура ЯДобавляюАргументДляКомандыИзПеременной(Знач ИмяКоманды, Знач ИмяПеременной) Экспорт
55-
55+
5656
Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды));
5757
ЗначениеПеременной = БДД.ПолучитьИзКонтекста(ИмяПеременной);
5858

5959
Команда.ДобавитьПараметр(ЗначениеПеременной);
60-
60+
6161
КонецПроцедуры
6262

6363
//Я добавляю параметр "-tmpdir" для команды "gitsync" из переменной "ВременнаяДиректория"
@@ -76,7 +76,7 @@
7676
Для Каждого Параметр из ТаблицаПараметров Цикл
7777
Команда.ДобавитьПараметр(Параметр[0])
7878
КонецЦикла
79-
79+
8080
КонецПроцедуры
8181

8282

@@ -86,8 +86,13 @@
8686
ПутьКПриложению = ПутьКИсполняемомуФайлу();
8787
Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды));
8888
Команда.УстановитьКоманду("oscript");
89-
Команда.ДобавитьПараметр("-encoding=utf-8");
90-
89+
90+
СистемнаяИнформация = Новый СистемнаяИнформация;
91+
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
92+
Если Не ЭтоWindows Тогда
93+
Команда.ДобавитьПараметр("-encoding=utf-8");
94+
КонецЕсли;
95+
9196
Команда.ДобавитьПараметр(ОбернутьВКавычки(ПутьКПриложению));
9297

9398
КонецПроцедуры
@@ -98,7 +103,12 @@
98103
ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников);
99104
ИскомыйФайл = Новый Файл(ОбъединитьПути(ВременныйКаталог, ИмяФайла));
100105
Ожидаем.Что(ИскомыйФайл.Существует(), "Файл должен был существовать").ЭтоИстина();
106+
107+
КонецПроцедуры
101108

109+
//я включаю полную отладку логов пакетов OneScript
110+
Процедура ЯВключаюПолнуюОтладкуЛоговПакетовOnescript() Экспорт
111+
УстановитьПеременнуюСреды("LOGOS_LEVEL", "DEBUG");
102112
КонецПроцедуры
103113

104114
Функция КлючКоманды(Знач ИмяКоманды)
@@ -110,12 +120,11 @@
110120
КонецФункции
111121

112122
Функция ПутьКИсполняемомуФайлу()
113-
123+
114124
Возврат ОбъединитьПути(КаталогБиблиотеки(), "src", "cmd", "opm.os");
115-
125+
116126
КонецФункции
117127

118-
119128
Функция КаталогFixtures()
120129
Возврат ОбъединитьПути(КаталогБиблиотеки(), "tests", "fixtures");
121130
КонецФункции

src/core/Классы/УстановкаПакета.os

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,18 +133,22 @@
133133
Процедура УстановитьФайлыПакета(Знач ПутьУстановки, Знач ФайлСодержимого, СтандартнаяОбработка)
134134

135135
ЧтениеСодержимого = Новый ЧтениеZipФайла(ФайлСодержимого);
136+
КаталогУстановки = ПутьУстановки.ПолноеИмя;
137+
136138
Попытка
137139

138140
Лог.Отладка("Устанавливаю файлы пакета из архива");
139141
УдалитьУстаревшиеФайлы(ПутьУстановки);
140142

141-
ОбработчикСобытий = ПолучитьОбработчикСобытий(ПутьУстановки.ПолноеИмя);
143+
ИзвлечьФайл(ЧтениеСодержимого, КонстантыOpm.ИмяФайлаСпецификацииПакета, КаталогУстановки);
144+
145+
ОбработчикСобытий = ПолучитьОбработчикСобытий(КаталогУстановки);
142146

143-
ВызватьСобытиеПередУстановкой(ОбработчикСобытий, ПутьУстановки.ПолноеИмя, ЧтениеСодержимого);
147+
ВызватьСобытиеПередУстановкой(ОбработчикСобытий, КаталогУстановки, ЧтениеСодержимого);
144148

145-
ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя);
149+
ЧтениеСодержимого.ИзвлечьВсе(КаталогУстановки);
146150

147-
ВызватьСобытиеПриУстановке(ОбработчикСобытий, ПутьУстановки.ПолноеИмя, СтандартнаяОбработка);
151+
ВызватьСобытиеПриУстановке(ОбработчикСобытий, КаталогУстановки, СтандартнаяОбработка);
148152

149153
Исключение
150154
ЧтениеСодержимого.Закрыть();
@@ -156,6 +160,7 @@
156160
КонецПроцедуры
157161

158162
Процедура УдалитьУстаревшиеФайлы(Знач ПутьУстановки)
163+
Лог.Отладка("Удаляю устаревшие файлы");
159164
УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "*.os", Истина);
160165
УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "*.dll", Истина);
161166
УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "packagedef", Ложь);
@@ -319,13 +324,34 @@
319324
//
320325

321326
Функция ИзвлечьОбязательныйФайл(Знач Чтение, Знач ИмяФайла)
322-
Лог.Отладка("Извлечение: " + ИмяФайла);
327+
// Лог.Отладка("Извлечение: %1", ИмяФайла);
328+
// Элемент = Чтение.Элементы.Найти(ИмяФайла);
329+
// Если Элемент = Неопределено Тогда
330+
// ВызватьИсключение "Неверная структура пакета. Не найден файл " + ИмяФайла;
331+
// КонецЕсли;
332+
333+
// Чтение.Извлечь(Элемент, мВременныйКаталогУстановки);
334+
335+
// Возврат ОбъединитьПути(мВременныйКаталогУстановки, ИмяФайла);
336+
337+
ПутьФайла = ИзвлечьФайл(Чтение, ИмяФайла, мВременныйКаталогУстановки);
338+
Если ПутьФайла = "" Тогда
339+
ВызватьИсключение "Неверная структура пакета. Не найден файл " + ИмяФайла;
340+
КонецЕсли;
341+
342+
Возврат ПутьФайла;
343+
344+
КонецФункции
345+
346+
Функция ИзвлечьФайл(Знач Чтение, Знач ИмяФайла, Знач КаталогКудаИзвлечь)
347+
Лог.Отладка("Извлечение: %1", ИмяФайла);
323348
Элемент = Чтение.Элементы.Найти(ИмяФайла);
324349
Если Элемент = Неопределено Тогда
325-
ВызватьИсключение "Неверная структура пакета. Не найден файл " + ИмяФайла;
350+
Лог.Отладка("Не удалось извлечь файл %1", ИмяФайла);
351+
Возврат "";
326352
КонецЕсли;
327353

328-
Чтение.Извлечь(Элемент, мВременныйКаталогУстановки);
354+
Чтение.Извлечь(Элемент, КаталогКудаИзвлечь);
329355

330356
Возврат ОбъединитьПути(мВременныйКаталогУстановки, ИмяФайла);
331357

0 commit comments

Comments
 (0)