Skip to content

Commit 41e2029

Browse files
committed
Fix #26. Зависимости для разработки
1 parent 658e3d2 commit 41e2029

File tree

6 files changed

+78
-42
lines changed

6 files changed

+78
-42
lines changed

src/cmd/Классы/КомандаOpm_Install.os

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
КомандаПриложения.Опция("a all", Ложь, "Установить все пакеты, зарегистрированные в хабе");
77
КомандаПриложения.Опция("f file", "", "Указать файл из которого нужно установить пакет. Поддерживает указание маски файла для пакетной установки");
88
КомандаПриложения.Опция("l local", Ложь, "Установить пакеты в локальный каталог oscript_modules");
9+
КомандаПриложения.Опция("dev", Ложь, "Признак установки пакетов для разработки");
910
КомандаПриложения.Опция("s skip-install-deps", Ложь, "признак пропуска установки зависимых пакетов");
1011
КомандаПриложения.Опция("skip-create-app", Ложь, "признак отключения создания файла запуска");
1112
КомандаПриложения.Опция("d dest", "", "Переопределить стандартный каталог в который устанавливаются пакеты (вместо oscript_modules)");
@@ -31,6 +32,7 @@
3132
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
3233

3334
УстановкаВЛокальныйКаталог = КомандаПриложения.ЗначениеОпции("local");
35+
УстановкаПакетовРазработчика = КомандаПриложения.ЗначениеОпции("dev");
3436
УстановкаВсехПакетов = КомандаПриложения.ЗначениеОпции("all");
3537
КаталогУстановки = КомандаПриложения.ЗначениеОпции("dest");
3638
ФайлПакетаУстановки = КомандаПриложения.ЗначениеОпции("file");
@@ -58,6 +60,7 @@
5860
КонецЕсли;
5961

6062
Лог.Отладка("УстановкаВЛокальныйКаталог: %1", УстановкаВЛокальныйКаталог);
63+
Лог.Отладка("УстановкаПакетовРазработчика: %1", УстановкаПакетовРазработчика);
6164
Лог.Отладка("УстановкаВсехПакетов: %1", УстановкаВсехПакетов);
6265
Лог.Отладка("КаталогУстановки: %1", КаталогУстановки);
6366
Лог.Отладка("ФайлПакетаУстановки: %1", ФайлПакетаУстановки);
@@ -67,6 +70,7 @@
6770

6871
НастройкаУстановки = РаботаСПакетами.ПолучитьНастройкуУстановки();
6972
НастройкаУстановки.УстанавливатьЗависимости = НеобходимоУстановитьЗависимости;
73+
НастройкаУстановки.УстанавливатьЗависимостиРазработчика = УстановкаПакетовРазработчика;
7074
НастройкаУстановки.СоздаватьФайлыЗапуска = СоздаватьФайлыЗапуска;
7175
НастройкаУстановки.ИмяСервера = ИмяСервера;
7276

src/core/Классы/МенеджерУстановкиПакетов.os

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
Перем ИмяСервера;
1616

1717
Перем УстанавливатьЗависимости;
18+
Перем УстанавливатьЗависимостиРазработчика;
1819
Перем СоздаватьФайлыЗапуска;
1920

2021
Процедура ПриСозданииОбъекта(Знач ВходящийРежимУстановкиПакетов = Неопределено, Знач ВходящийКаталогУстановки = Неопределено, Знач ВходящийКаталогУстановкиЗависимостей = Неопределено, Знач ВходящийИмяСервера = "")
@@ -52,6 +53,7 @@
5253

5354
КешУстановленныхПакетов = Новый Соответствие;
5455
УстанавливатьЗависимости = Истина;
56+
УстанавливатьЗависимостиРазработчика = Ложь;
5557
СоздаватьФайлыЗапуска = Истина;
5658
ИмяСервера = ВходящийИмяСервера;
5759
КонецПроцедуры
@@ -60,6 +62,10 @@
6062
УстанавливатьЗависимости = ПУстанавливатьЗависимости;
6163
КонецПроцедуры
6264

65+
Процедура УстанавливатьЗависимостиРазработчика(Знач ПУстанавливатьЗависимостиРазработчика) Экспорт
66+
УстанавливатьЗависимостиРазработчика = ПУстанавливатьЗависимостиРазработчика;
67+
КонецПроцедуры
68+
6369
Процедура СоздаватьФайлыЗапуска(Знач ПСоздаватьФайлыЗапуска) Экспорт
6470
СоздаватьФайлыЗапуска = ПСоздаватьФайлыЗапуска;
6571
КонецПроцедуры
@@ -95,9 +101,19 @@
95101

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

98-
Процедура УстановитьПакетПоОписанию(Знач ОписаниеПакета) Экспорт
104+
Процедура УстановитьПакетПоОписанию(Знач ЗависимостьПакета) Экспорт
99105

100-
УстановитьПакетПоИмениИВерсии(ОписаниеПакета.ИмяПакета, ОписаниеПакета.МинимальнаяВерсия, Истина);
106+
Если ЗависимостьПакета.ДляРазработки Тогда
107+
Если УстанавливатьЗависимостиРазработчика Тогда
108+
Лог.Информация("<%1> отмечена как зависимость для разработчика. Устанавливаем.", ЗависимостьПакета.ИмяПакета);
109+
Иначе
110+
Лог.Информация("<%1> отмечена как зависимость для разработчика, " +
111+
"но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета);
112+
Возврат;
113+
КонецЕсли;
114+
КонецЕсли;
115+
116+
УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина);
101117

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

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

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,36 @@
8686

8787
Функция ЗависитОт(Знач ИмяПакета, Знач МинимальнаяВерсия = Неопределено, Знач МаксимальнаяВерсия = Неопределено) Экспорт
8888

89-
ТекЗависимость = Зависимость(ИмяПакета);
90-
Если ТекЗависимость = Неопределено Тогда
89+
Зависимость = Зависимость(ИмяПакета);
90+
Если Зависимость = Неопределено Тогда
9191
Зависимость = мЗависимости.Добавить();
9292
Зависимость.ИмяПакета = ИмяПакета;
9393
КонецЕсли;
94+
95+
Зависимость.ДляРазработки = Ложь;
96+
97+
Если МинимальнаяВерсия = Неопределено Тогда
98+
Возврат ЭтотОбъект;
99+
КонецЕсли;
100+
101+
Зависимость.МинимальнаяВерсия = МинимальнаяВерсия;
102+
Зависимость.МаксимальнаяВерсия = МаксимальнаяВерсия;
103+
104+
Возврат ЭтотОбъект;
105+
106+
КонецФункции
107+
108+
Функция РазработкаЗависитОт(
109+
Знач ИмяПакета,
110+
Знач МинимальнаяВерсия = Неопределено,
111+
Знач МаксимальнаяВерсия = Неопределено) Экспорт
112+
113+
Зависимость = Зависимость(ИмяПакета);
114+
Если Зависимость = Неопределено Тогда
115+
Зависимость = мЗависимости.Добавить();
116+
Зависимость.ИмяПакета = ИмяПакета;
117+
Зависимость.ДляРазработки = Истина;
118+
КонецЕсли;
94119

95120
Если МинимальнаяВерсия = Неопределено Тогда
96121
Возврат ЭтотОбъект;
@@ -200,6 +225,7 @@
200225

201226
мЗависимости = Новый ТаблицаЗначений;
202227
мЗависимости.Колонки.Добавить("ИмяПакета");
228+
мЗависимости.Колонки.Добавить("ДляРазработки", Новый ОписаниеТипов("Булево"));
203229
мЗависимости.Колонки.Добавить("МинимальнаяВерсия");
204230
мЗависимости.Колонки.Добавить("МаксимальнаяВерсия");
205231

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

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
Для Каждого Зависимость Из Зависимости Цикл
9090
Запись.ЗаписатьНачалоЭлемента(ИменаКоллекцийПакета().Зависимости);
9191
Запись.ЗаписатьАтрибут("name", Зависимость.ИмяПакета);
92+
Запись.ЗаписатьАтрибут("dev", Формат(Зависимость.ДляРазработки, "БЛ=false; БИ=true"));
9293
Если Не ПустаяСтрока(Зависимость.МинимальнаяВерсия) Тогда
9394
Запись.ЗаписатьАтрибут("version", Зависимость.МинимальнаяВерсия);
9495
КонецЕсли;
@@ -236,10 +237,21 @@
236237

237238
МинимальнаяВерсия = ЧтениеXML.ПолучитьАтрибут("version");
238239
МаксимальнаяВерсия = ЧтениеXML.ПолучитьАтрибут("version-max");
239-
240-
Лог.Отладка("Добавляем зависимость " + ИмяЗависимости + " " + МинимальнаяВерсия + " " + МаксимальнаяВерсия);
241-
ОписаниеПакета.ЗависитОт(ИмяЗависимости, МинимальнаяВерсия, МаксимальнаяВерсия);
242-
240+
ДляРазработки = ЧтениеXML.ПолучитьАтрибут("dev");
241+
242+
Лог.Отладка(
243+
"Добавляем зависимость %1 %2 %3 %4",
244+
ИмяЗависимости,
245+
МинимальнаяВерсия,
246+
МаксимальнаяВерсия,
247+
ДляРазработки
248+
);
249+
250+
Если ДляРазработки = "true" Тогда
251+
ОписаниеПакета.РазработкаЗависитОт(ИмяЗависимости, МинимальнаяВерсия, МаксимальнаяВерсия);
252+
Иначе
253+
ОписаниеПакета.ЗависитОт(ИмяЗависимости, МинимальнаяВерсия, МаксимальнаяВерсия);
254+
КонецЕсли;
243255
ЧтениеXML.Прочитать();
244256

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

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

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757

5858
Настройка = Новый Структура();
5959
Настройка.Вставить("УстанавливатьЗависимости", Истина);
60+
Настройка.Вставить("УстанавливатьЗависимостиРазработчика", Ложь);
6061
Настройка.Вставить("СоздаватьФайлыЗапуска", Истина);
6162
Настройка.Вставить("ИмяСервера", "");
6263

@@ -80,6 +81,7 @@
8081
МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановки, ЦелевойКаталог, , НастройкаУстановки.ИмяСервера);
8182
МенеджерУстановки.УстанавливатьЗависимости(НастройкаУстановки.УстанавливатьЗависимости);
8283
МенеджерУстановки.СоздаватьФайлыЗапуска(НастройкаУстановки.СоздаватьФайлыЗапуска);
84+
МенеджерУстановки.УстанавливатьЗависимостиРазработчика(НастройкаУстановки.УстанавливатьЗависимостиРазработчика);
8385
МенеджерУстановки.УстановитьПакетПоИмениИВерсии(ИмяВерсияПакета.ИмяПакета, ИмяВерсияПакета.Версия, ЭтоЗависимость);
8486

8587
КонецПроцедуры
@@ -94,40 +96,12 @@
9496

9597
МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановки, ЦелевойКаталог, , НастройкаУстановки.ИмяСервера);
9698
МенеджерУстановки.УстанавливатьЗависимости(НастройкаУстановки.УстанавливатьЗависимости);
99+
МенеджерУстановки.УстанавливатьЗависимостиРазработчика(НастройкаУстановки.УстанавливатьЗависимостиРазработчика);
97100
МенеджерУстановки.СоздаватьФайлыЗапуска(НастройкаУстановки.СоздаватьФайлыЗапуска);
98101
МенеджерУстановки.УстановитьПакетИзАрхива(ИмяФайлаПакета);
99102

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

102-
Процедура ПроверитьВерсиюСреды(Манифест)
103-
104-
Свойства = Манифест.Свойства();
105-
Если НЕ Свойства.Свойство("ВерсияСреды") Тогда
106-
Возврат;
107-
КонецЕсли;
108-
109-
ИмяПакета = Свойства.Имя;
110-
ТребуемаяВерсияСреды = Свойства.ВерсияСреды;
111-
СистемнаяИнформация = Новый СистемнаяИнформация;
112-
ВерсияСреды = СистемнаяИнформация.Версия;
113-
Лог.Отладка("ПроверитьВерсиюСреды: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", ТребуемаяВерсияСреды, ВерсияСреды);
114-
Если РаботаСВерсиями.СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда
115-
ТекстСообщения = СтрШаблон(
116-
"Ошибка установки пакета <%1>: Обнаружена устаревшая версия движка OneScript.
117-
|Требуемая версия: %2
118-
|Текущая версия: %3
119-
|Обновите OneScript перед установкой пакета",
120-
ИмяПакета,
121-
ТребуемаяВерсияСреды,
122-
ВерсияСреды
123-
);
124-
125-
ВызватьИсключение ТекстСообщения;
126-
КонецЕсли;
127-
128-
КонецПроцедуры
129-
130-
131105
Процедура УстановитьВсеПакетыИзОблака(Знач РежимУстановки, Знач ЦелевойКаталог = Неопределено,
132106
Знач НастройкаУстановки = Неопределено) Экспорт
133107

@@ -150,13 +124,14 @@
150124

151125
ОписаниеПакета = РаботаСОписаниемПакета.ПрочитатьОписаниеПакета();
152126

153-
ПроверитьВерсиюСреды(ОписаниеПакета);
127+
РаботаСОписаниемПакета.ПроверитьВерсиюСреды(ОписаниеПакета);
154128

155129
Если НастройкаУстановки = Неопределено Тогда
156130
НастройкаУстановки = ПолучитьНастройкуУстановки();
157131
КонецЕсли;
158132

159133
МенеджерУстановки = Новый МенеджерУстановкиПакетов(РежимУстановки, , , НастройкаУстановки.ИмяСервера);
134+
МенеджерУстановки.УстанавливатьЗависимостиРазработчика(НастройкаУстановки.УстанавливатьЗависимостиРазработчика);
160135
МенеджерУстановки.СоздаватьФайлыЗапуска(НастройкаУстановки.СоздаватьФайлыЗапуска);
161136

162137
МенеджерУстановки.РазрешитьЗависимостиПакета(ОписаниеПакета);

tests/mft-serializer-test.os

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
.АдресАвтора("[email protected]")
3737
.ЗависитОт("asserts")
3838
.ЗависитОт("cmdline",">=2.1","<3.0")
39+
.РазработкаЗависитОт("logos")
3940
.Задачи("tasks")
4041
.ВключитьФайл("src")
4142
.ВключитьФайл("tests")
@@ -76,8 +77,9 @@
7677
| <description>Это пакет для тестирования</description>
7778
| <author-email>[email protected]</author-email>
7879
| <tasks>tasks</tasks>
79-
| <depends-on name=""asserts""/>
80-
| <depends-on name=""cmdline"" version=""&gt;=2.1"" version-max=""&lt;3.0""/>
80+
| <depends-on name=""asserts"" dev=""false""/>
81+
| <depends-on name=""cmdline"" dev=""false"" version=""&gt;=2.1"" version-max=""&lt;3.0""/>
82+
| <depends-on name=""logos"" dev=""true""/>
8183
| <executable>src/app1.os</executable>
8284
| <executable>src/app2.os</executable>
8385
| <include-content>src</include-content>
@@ -116,8 +118,9 @@
116118
| <description>Это пакет для тестирования</description>
117119
| <author-email>[email protected]</author-email>
118120
| <tasks>tasks</tasks>
119-
| <depends-on name=""asserts""/>
120-
| <depends-on name=""cmdline"" version=""&gt;=2.1"" version-max=""&lt;3.0""/>
121+
| <depends-on name=""asserts"" dev=""false""/>
122+
| <depends-on name=""cmdline"" dev=""false"" version=""&gt;=2.1"" version-max=""&lt;3.0""/>
123+
| <depends-on name=""logos"" dev=""true""/>
121124
| <executable>src/app1.os</executable>
122125
| <executable>src/app2.os</executable>
123126
|</opm-metadata>";

0 commit comments

Comments
 (0)