Skip to content

Commit fda638a

Browse files
committed
Версия манифеста
1 parent 207b4e5 commit fda638a

7 files changed

+84
-32
lines changed

src/core/Классы/ОписаниеПакета.os

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@
4545
Возврат ЭтотОбъект;
4646
КонецФункции
4747

48+
Функция ВерсияМанифеста(Знач Параметр) Экспорт
49+
УстановитьСвойствоПакета("ВерсияМанифеста", Параметр);
50+
Возврат ЭтотОбъект;
51+
КонецФункции
52+
4853
Функция ТочкаВхода(Знач Параметр) Экспорт
4954
УстановитьСвойствоПакета("ТочкаВхода", Параметр);
5055
Возврат ЭтотОбъект;

src/core/Классы/СборщикПакета.os

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
УстановитьТекущийКаталог(РабочийКаталог);
3737
УточнитьФайлМанифеста(ФайлМанифеста);
3838
Манифест = ПрочитатьМанифест(ФайлМанифеста);
39+
РаботаСОписаниемПакета.ПроверитьВерсиюМанифеста(Манифест);
3940
ВызватьСобытиеПередСборкой();
4041
СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог);
4142
УстановитьТекущийКаталог(ТекущийРабКаталог);

src/core/Классы/СериализацияМетаданныхПакета.os

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
СоответствиеИменСвойств.Вставить("Описание" , "description");
4545
СоответствиеИменСвойств.Вставить("АдресАвтора", "author-email");
4646
СоответствиеИменСвойств.Вставить("ВерсияСреды", "engine-version");
47+
СоответствиеИменСвойств.Вставить("ВерсияМанифеста", "manifest-version");
4748
СоответствиеИменСвойств.Вставить("Задачи", "tasks");
4849

4950
Возврат СоответствиеИменСвойств;

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

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
ПутьУстановки = ОбъектКаталогУстановки.ПолноеИмя;
4141

4242
Лог.Информация("Устанавливаю пакет " + ИмяПакета);
43-
ПроверитьВерсиюСреды(Метаданные);
43+
РаботаСОписаниемПакета.ПроверитьВерсиюМанифеста(Метаданные);
44+
РаботаСОписаниемПакета.ПроверитьВерсиюСреды(Метаданные);
4445
Если мЗависимостиВРаботе[ИмяПакета] = "ВРаботе" Тогда
4546
ВызватьИсключение "Циклическая зависимость по пакету " + ИмяПакета;
4647
КонецЕсли;
@@ -91,34 +92,6 @@
9192
СоздаватьФайлЗапуска = ПСоздаватьФайлЗапуска;
9293
КонецПроцедуры
9394

94-
Процедура ПроверитьВерсиюСреды(Манифест)
95-
96-
Свойства = Манифест.Свойства();
97-
Если НЕ Свойства.Свойство("ВерсияСреды") Тогда
98-
Возврат;
99-
КонецЕсли;
100-
101-
ИмяПакета = Свойства.Имя;
102-
ТребуемаяВерсияСреды = Свойства.ВерсияСреды;
103-
СистемнаяИнформация = Новый СистемнаяИнформация;
104-
ВерсияСреды = СистемнаяИнформация.Версия;
105-
Лог.Отладка("ПроверитьВерсиюСреды: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", ТребуемаяВерсияСреды, ВерсияСреды);
106-
Если РаботаСВерсиями.СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда
107-
ТекстСообщения = СтрШаблон(
108-
"Ошибка установки пакета <%1>: Обнаружена устаревшая версия движка OneScript.
109-
|Требуемая версия: %2
110-
|Текущая версия: %3
111-
|Обновите OneScript перед установкой пакета",
112-
ИмяПакета,
113-
ТребуемаяВерсияСреды,
114-
ВерсияСреды
115-
);
116-
117-
ВызватьИсключение ТекстСообщения;
118-
КонецЕсли;
119-
120-
КонецПроцедуры
121-
12295
Процедура УстановитьЦелевойКаталог(Знач ЦелевойКаталогУстановки) Экспорт
12396
Лог.Отладка("Каталог установки пакета '%1'", ЦелевойКаталогУстановки);
12497
ФС.ОбеспечитьКаталог(ЦелевойКаталогУстановки);

src/core/Модули/РаботаСОписаниемПакета.os

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
Перем Лог;
2+
13
Функция ПрочитатьОписаниеПакета() Экспорт
24

35
Описание = Новый ОписаниеПакета();
@@ -12,4 +14,65 @@
1214

1315
Возврат Описание;
1416

15-
КонецФункции
17+
КонецФункции
18+
19+
Процедура ПроверитьВерсиюМанифеста(Манифест) Экспорт
20+
21+
Свойства = Манифест.Свойства();
22+
Если НЕ Свойства.Свойство("ВерсияМанифеста") Тогда
23+
Возврат;
24+
КонецЕсли;
25+
26+
ИмяПакета = Свойства.Имя;
27+
ТребуемаяВерсияМанифеста = Свойства.ВерсияМанифеста;
28+
ТекущаяВерсияМанифеста = КонстантыOpm.ВерсияПродукта;
29+
Лог.Отладка(
30+
"ПроверитьВерсиюМанифеста: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)",
31+
ТребуемаяВерсияМанифеста,
32+
ТекущаяВерсияМанифеста
33+
);
34+
Если РаботаСВерсиями.СравнитьВерсии(ТребуемаяВерсияМанифеста, ТекущаяВерсияМанифеста) > 0 Тогда
35+
ТекстСообщения = СтрШаблон(
36+
"Ошибка установки пакета <%1>: Обнаружена устаревшая версия opm.
37+
|Требуемая версия: %2
38+
|Текущая версия: %3
39+
|Обновите opm перед установкой пакета",
40+
ИмяПакета,
41+
ТребуемаяВерсияМанифеста,
42+
ТекущаяВерсияМанифеста
43+
);
44+
45+
ВызватьИсключение ТекстСообщения;
46+
КонецЕсли;
47+
48+
КонецПроцедуры
49+
50+
Процедура ПроверитьВерсиюСреды(Манифест) Экспорт
51+
52+
Свойства = Манифест.Свойства();
53+
Если НЕ Свойства.Свойство("ВерсияСреды") Тогда
54+
Возврат;
55+
КонецЕсли;
56+
57+
ИмяПакета = Свойства.Имя;
58+
ТребуемаяВерсияСреды = Свойства.ВерсияСреды;
59+
СистемнаяИнформация = Новый СистемнаяИнформация;
60+
ВерсияСреды = СистемнаяИнформация.Версия;
61+
Лог.Отладка("ПроверитьВерсиюСреды: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", ТребуемаяВерсияСреды, ВерсияСреды);
62+
Если РаботаСВерсиями.СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда
63+
ТекстСообщения = СтрШаблон(
64+
"Ошибка установки пакета <%1>: Обнаружена устаревшая версия движка OneScript.
65+
|Требуемая версия: %2
66+
|Текущая версия: %3
67+
|Обновите OneScript перед установкой пакета",
68+
ИмяПакета,
69+
ТребуемаяВерсияСреды,
70+
ВерсияСреды
71+
);
72+
73+
ВызватьИсключение ТекстСообщения;
74+
КонецЕсли;
75+
76+
КонецПроцедуры
77+
78+
Лог = Логирование.ПолучитьЛог("oscript.app.opm");

tests/mft-serializer-test.os

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@
3131
.Автор("Я")
3232
.Версия("1.0.5")
3333
.ВерсияСреды("1.0")
34+
.ВерсияМанифеста("1.0")
3435
.Описание("Это пакет для тестирования")
3536
.АдресАвтора("[email protected]")
3637
.ЗависитОт("asserts")
3738
.ЗависитОт("cmdline",">=2.1","<3.0")
39+
.Задачи("tasks")
3840
.ВключитьФайл("src")
3941
.ВключитьФайл("tests")
4042
.ОпределяетМодуль("Модуль1", "src/m1.os")
@@ -60,7 +62,7 @@
6062

6163
ЗаписатьМанифест(Запись, СоздатьТестовыйМанифест());
6264

63-
Результат = СтрЗаменить(Запись.Закрыть(), Символы.ВК+Символы.ПС, Символы.ПС);
65+
Результат = СтрЗаменить(Запись.Закрыть(), Символы.ВК + Символы.ПС, Символы.ПС);
6466
Результат = СтрЗаменить(Результат, " />", "/>");
6567

6668
Эталон =
@@ -70,8 +72,10 @@
7072
| <author>Я</author>
7173
| <version>1.0.5</version>
7274
| <engine-version>1.0</engine-version>
75+
| <manifest-version>1.0</manifest-version>
7376
| <description>Это пакет для тестирования</description>
7477
| <author-email>[email protected]</author-email>
78+
| <tasks>tasks</tasks>
7579
| <depends-on name=""asserts""/>
7680
| <depends-on name=""cmdline"" version=""&gt;=2.1"" version-max=""&lt;3.0""/>
7781
| <executable>src/app1.os</executable>
@@ -108,8 +112,10 @@
108112
| <author>Я</author>
109113
| <version>1.0.5</version>
110114
| <engine-version>1.0</engine-version>
115+
| <manifest-version>1.0</manifest-version>
111116
| <description>Это пакет для тестирования</description>
112117
| <author-email>[email protected]</author-email>
118+
| <tasks>tasks</tasks>
113119
| <depends-on name=""asserts""/>
114120
| <depends-on name=""cmdline"" version=""&gt;=2.1"" version-max=""&lt;3.0""/>
115121
| <executable>src/app1.os</executable>

tests/packagedef-test.os

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,18 @@
4545
.Автор("Я")
4646
.Версия("1.0.5")
4747
.ВерсияСреды("1.0")
48+
.ВерсияМанифеста("1.0")
4849
.Описание("Это пакет для тестирования")
49-
.АдресАвтора("[email protected]");
50+
.АдресАвтора("[email protected]")
51+
;
5052

5153
Свойства = Описание.Свойства();
5254

5355
Ожидаем.Что(Свойства.Имя).Равно("ТестовыйПакет");
5456
Ожидаем.Что(Свойства.Автор).Равно("Я");
5557
Ожидаем.Что(Свойства.Версия).Равно("1.0.5");
5658
Ожидаем.Что(Свойства.ВерсияСреды).Равно("1.0");
59+
Ожидаем.Что(Свойства.ВерсияМанифеста).Равно("1.0");
5760
Ожидаем.Что(Свойства.Описание).Равно("Это пакет для тестирования");
5861
Ожидаем.Что(Свойства.АдресАвтора).Равно("[email protected]");
5962

0 commit comments

Comments
 (0)