Skip to content

Commit e38219d

Browse files
committed
Merge branch 'release/0.15.1'
2 parents a2526a5 + 71deabe commit e38219d

File tree

6 files changed

+124
-25
lines changed

6 files changed

+124
-25
lines changed

features/install-file.feature

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@
2121
И Я добавляю параметр "--local" для команды "opm"
2222
И Я добавляю опцию "-f" для команды "opm" из переменной "ИмяФайлаПакета"
2323
Когда Я выполняю команду "opm"
24-
Тогда Вывод команды "opm" содержит "ИНФОРМАЦИЯ - Установка завершена"
24+
И я вижу в консоли вывод
25+
| Событие установки - ПередУстановкой - КаталогУстановкиПакета |
26+
| Событие установки - ПриУстановке - КаталогУстановкиПакета |
27+
| ИНФОРМАЦИЯ - Установка завершена |
2528
И Вывод команды "opm" не содержит "Внешнее исключение"
2629
И Код возврата команды "opm" равен 0
2730
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules"
2831
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test"
2932
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/opm-metadata.xml"
3033
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder"
3134
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder/src.os"
32-
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder/src.dll"
35+
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules/test/folder/src.dll"
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: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
ВсеШаги.Добавить("ЯДобавляюАргументДляКомандыИзПеременной");
1717
ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкруженияИзПеременной");
1818
ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной");
19-
2019

2120
Возврат ВсеШаги;
2221
КонецФункции
@@ -25,26 +24,26 @@
2524

2625
// Процедура выполняется перед запуском каждого сценария
2726
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
28-
27+
2928
КонецПроцедуры
3029

3130
// Процедура выполняется после завершения каждого сценария
3231
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
33-
32+
3433
КонецПроцедуры
3534

3635
//Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов"
3736
Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной(Знач ИмяПеременной) Экспорт
3837

3938
ВременныйКаталог = ВременныеФайлы.СоздатьКаталог();
40-
39+
4140
БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйКаталог);
42-
41+
4342
КонецПроцедуры
4443

4544
//Я устанавливаю переменную окружения "GITSYNC_STORAGE_PATH" из переменной "КаталогХранилища1С"
4645
Процедура ЯУстанавливаюПеременнуюОкруженияИзПеременной(Знач ИмяПеременной, Знач КаталогХранилища1С) Экспорт
47-
46+
4847
ЗначениеПеременной = БДД.ПолучитьИзКонтекста(КаталогХранилища1С);
4948
УстановитьПеременнуюСреды(ИмяПеременной, ЗначениеПеременной);
5049

@@ -55,7 +54,7 @@
5554

5655
Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды));
5756
ЗначениеПеременной = БДД.ПолучитьИзКонтекста(ИмяПеременной);
58-
57+
5958
Команда.ДобавитьПараметр(ЗначениеПеременной);
6059

6160
КонецПроцедуры
@@ -71,7 +70,7 @@
7170
//|--storage-user Администратор|
7271
//|-useVendorUnload|
7372
Процедура ЯДобавляюПараметрыДляКоманды(Знач ИмяКоманды, Знач ТаблицаПараметров) Экспорт
74-
73+
7574
Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды));
7675
Для Каждого Параметр из ТаблицаПараметров Цикл
7776
Команда.ДобавитьПараметр(Параметр[0])
@@ -82,19 +81,24 @@
8281

8382
//Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке
8483
Процедура ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке(Знач ИмяКоманды) Экспорт
85-
84+
8685
ПутьКПриложению = ПутьКИсполняемомуФайлу();
8786
Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды));
8887
Команда.УстановитьКоманду("oscript");
89-
Команда.ДобавитьПараметр("-encoding=utf-8");
88+
89+
СистемнаяИнформация = Новый СистемнаяИнформация;
90+
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
91+
Если Не ЭтоWindows Тогда
92+
Команда.ДобавитьПараметр("-encoding=utf-8");
93+
КонецЕсли;
9094

9195
Команда.ДобавитьПараметр(ОбернутьВКавычки(ПутьКПриложению));
92-
96+
9397
КонецПроцедуры
9498

9599
//В каталоге из переменной "ПутьКаталогаИсходников" создается файл или каталог "AUTHORS"
96100
Процедура ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог(Знач ПутьКаталогаИсходников, Знач ИмяФайла) Экспорт
97-
101+
98102
ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников);
99103
ИскомыйФайл = Новый Файл(ОбъединитьПути(ВременныйКаталог, ИмяФайла));
100104
Ожидаем.Что(ИскомыйФайл.Существует(), "Файл должен был существовать").ЭтоИстина();
@@ -115,7 +119,6 @@
115119

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

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

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
Описание.Имя("opm")
4747
.Версия(Константы_ЛокальнаяВерсия.ВерсияПродукта)
4848
.ВерсияСреды("1.0.19")
49-
.ЗависитОт("fs", "0.4.1")
49+
.ЗависитОт("fs", "0.5.0")
5050
.ЗависитОт("asserts", "0.4.0")
5151
.ЗависитОт("json", "1.0.1")
5252
.ЗависитОт("fluent", "0.3.1")

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

Lines changed: 24 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,25 @@
319324
//
320325

321326
Функция ИзвлечьОбязательныйФайл(Знач Чтение, Знач ИмяФайла)
322-
Лог.Отладка("Извлечение: " + ИмяФайла);
327+
328+
ПутьФайла = ИзвлечьФайл(Чтение, ИмяФайла, мВременныйКаталогУстановки);
329+
Если ПутьФайла = "" Тогда
330+
ВызватьИсключение "Неверная структура пакета. Не найден файл " + ИмяФайла;
331+
КонецЕсли;
332+
333+
Возврат ПутьФайла;
334+
335+
КонецФункции
336+
337+
Функция ИзвлечьФайл(Знач Чтение, Знач ИмяФайла, Знач КаталогКудаИзвлечь)
338+
Лог.Отладка("Извлечение: %1", ИмяФайла);
323339
Элемент = Чтение.Элементы.Найти(ИмяФайла);
324340
Если Элемент = Неопределено Тогда
325-
ВызватьИсключение "Неверная структура пакета. Не найден файл " + ИмяФайла;
341+
Лог.Отладка("Не удалось извлечь файл %1", ИмяФайла);
342+
Возврат "";
326343
КонецЕсли;
327344

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

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

src/core/Модули/КонстантыOpm.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@
2424
ПутьВЗапасномХранилище = "/download/";
2525
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
2626
ИмяЛога = "oscript.app.opm";
27-
ВерсияПродукта = "0.15.0";
27+
ВерсияПродукта = "0.15.1";
2828
ИмяФайлаНастроек = "opm.cfg";

0 commit comments

Comments
 (0)