Skip to content

Commit

Permalink
Merge branch 'release/v1.0.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Aug 19, 2020
2 parents 4d3c29b + 2cf569c commit 618df2f
Show file tree
Hide file tree
Showing 12 changed files with 164 additions and 75 deletions.
1 change: 1 addition & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
.ЗависитОт("gitrunner", "1.6.0")
.ВключитьФайл("packagedef")
.ВключитьФайл("src")
.ВключитьФайл("tasks")
.ВключитьФайл("oscript_modules")
.ОпределяетКласс("КэшУстановленныхПакетов", "src/core/Классы/КэшУстановленныхПакетов.os")
.ОпределяетКласс("МенеджерПолученияПакетов", "src/core/Классы/МенеджерПолученияПакетов.os")
Expand Down
4 changes: 4 additions & 0 deletions src/cmd/Классы/КомандаOpm_Install.os
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
КомандаПриложения.Опция("a all", Ложь, "Установить все пакеты, зарегистрированные в хабе");
КомандаПриложения.Опция("f file", "", "Указать файл из которого нужно установить пакет. Поддерживает указание маски файла для пакетной установки");
КомандаПриложения.Опция("l local", Ложь, "Установить пакеты в локальный каталог oscript_modules");
КомандаПриложения.Опция("dev", Ложь, "Признак установки пакетов для разработки");
КомандаПриложения.Опция("s skip-install-deps", Ложь, "признак пропуска установки зависимых пакетов");
КомандаПриложения.Опция("skip-create-app", Ложь, "признак отключения создания файла запуска");
КомандаПриложения.Опция("d dest", "", "Переопределить стандартный каталог в который устанавливаются пакеты (вместо oscript_modules)");
Expand All @@ -31,6 +32,7 @@
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

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

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

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
Перем ИмяСервера;

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

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

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

Процедура УстанавливатьЗависимостиРазработчика(Знач ПУстанавливатьЗависимостиРазработчика) Экспорт
УстанавливатьЗависимостиРазработчика = ПУстанавливатьЗависимостиРазработчика;
КонецПроцедуры

Процедура СоздаватьФайлыЗапуска(Знач ПСоздаватьФайлыЗапуска) Экспорт
СоздаватьФайлыЗапуска = ПСоздаватьФайлыЗапуска;
КонецПроцедуры
Expand Down Expand Up @@ -95,9 +101,19 @@

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

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

УстановитьПакетПоИмениИВерсии(ОписаниеПакета.ИмяПакета, ОписаниеПакета.МинимальнаяВерсия, Истина);
Если ЗависимостьПакета.ДляРазработки Тогда
Если УстанавливатьЗависимостиРазработчика Тогда
Лог.Информация("<%1> отмечена как зависимость для разработчика. Устанавливаем.", ЗависимостьПакета.ИмяПакета);
Иначе
Лог.Информация("<%1> отмечена как зависимость для разработчика, " +
"но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета);
Возврат;
КонецЕсли;
КонецЕсли;

УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина);

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

Expand Down
35 changes: 33 additions & 2 deletions src/core/Классы/ОписаниеПакета.os
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@
Возврат ЭтотОбъект;
КонецФункции

Функция ВерсияМанифеста(Знач Параметр) Экспорт
УстановитьСвойствоПакета("ВерсияМанифеста", Параметр);
Возврат ЭтотОбъект;
КонецФункции

Функция ТочкаВхода(Знач Параметр) Экспорт
УстановитьСвойствоПакета("ТочкаВхода", Параметр);
Возврат ЭтотОбъект;
Expand Down Expand Up @@ -81,10 +86,35 @@

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

ТекЗависимость = Зависимость(ИмяПакета);
Если ТекЗависимость = Неопределено Тогда
Зависимость = Зависимость(ИмяПакета);
Если Зависимость = Неопределено Тогда
Зависимость = мЗависимости.Добавить();
Зависимость.ИмяПакета = ИмяПакета;
КонецЕсли;

Зависимость.ДляРазработки = Ложь;

Если МинимальнаяВерсия = Неопределено Тогда
Возврат ЭтотОбъект;
КонецЕсли;

Зависимость.МинимальнаяВерсия = МинимальнаяВерсия;
Зависимость.МаксимальнаяВерсия = МаксимальнаяВерсия;

Возврат ЭтотОбъект;

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

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

Зависимость = Зависимость(ИмяПакета);
Если Зависимость = Неопределено Тогда
Зависимость = мЗависимости.Добавить();
Зависимость.ИмяПакета = ИмяПакета;
Зависимость.ДляРазработки = Истина;
КонецЕсли;

Если МинимальнаяВерсия = Неопределено Тогда
Expand Down Expand Up @@ -195,6 +225,7 @@

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

Expand Down
1 change: 1 addition & 0 deletions src/core/Классы/СборщикПакета.os
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
УстановитьТекущийКаталог(РабочийКаталог);
УточнитьФайлМанифеста(ФайлМанифеста);
Манифест = ПрочитатьМанифест(ФайлМанифеста);
РаботаСОписаниемПакета.ПроверитьВерсиюМанифеста(Манифест);
ВызватьСобытиеПередСборкой();
СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог);
УстановитьТекущийКаталог(ТекущийРабКаталог);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
СоответствиеИменСвойств.Вставить("Описание" , "description");
СоответствиеИменСвойств.Вставить("АдресАвтора", "author-email");
СоответствиеИменСвойств.Вставить("ВерсияСреды", "engine-version");
СоответствиеИменСвойств.Вставить("ВерсияМанифеста", "manifest-version");
СоответствиеИменСвойств.Вставить("Задачи", "tasks");

Возврат СоответствиеИменСвойств;
Expand Down Expand Up @@ -88,6 +89,7 @@
Для Каждого Зависимость Из Зависимости Цикл
Запись.ЗаписатьНачалоЭлемента(ИменаКоллекцийПакета().Зависимости);
Запись.ЗаписатьАтрибут("name", Зависимость.ИмяПакета);
Запись.ЗаписатьАтрибут("dev", Формат(Зависимость.ДляРазработки, "БЛ=false; БИ=true"));
Если Не ПустаяСтрока(Зависимость.МинимальнаяВерсия) Тогда
Запись.ЗаписатьАтрибут("version", Зависимость.МинимальнаяВерсия);
КонецЕсли;
Expand Down Expand Up @@ -235,10 +237,21 @@

МинимальнаяВерсия = ЧтениеXML.ПолучитьАтрибут("version");
МаксимальнаяВерсия = ЧтениеXML.ПолучитьАтрибут("version-max");

Лог.Отладка("Добавляем зависимость " + ИмяЗависимости + " " + МинимальнаяВерсия + " " + МаксимальнаяВерсия);
ОписаниеПакета.ЗависитОт(ИмяЗависимости, МинимальнаяВерсия, МаксимальнаяВерсия);

ДляРазработки = ЧтениеXML.ПолучитьАтрибут("dev");

Лог.Отладка(
"Добавляем зависимость %1 %2 %3 %4",
ИмяЗависимости,
МинимальнаяВерсия,
МаксимальнаяВерсия,
ДляРазработки
);

Если ДляРазработки = "true" Тогда
ОписаниеПакета.РазработкаЗависитОт(ИмяЗависимости, МинимальнаяВерсия, МаксимальнаяВерсия);
Иначе
ОписаниеПакета.ЗависитОт(ИмяЗависимости, МинимальнаяВерсия, МаксимальнаяВерсия);
КонецЕсли;
ЧтениеXML.Прочитать();

КонецПроцедуры
Expand Down
31 changes: 2 additions & 29 deletions src/core/Классы/УстановкаПакета.os
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
ПутьУстановки = ОбъектКаталогУстановки.ПолноеИмя;

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

Процедура ПроверитьВерсиюСреды(Манифест)

Свойства = Манифест.Свойства();
Если НЕ Свойства.Свойство("ВерсияСреды") Тогда
Возврат;
КонецЕсли;

ИмяПакета = Свойства.Имя;
ТребуемаяВерсияСреды = Свойства.ВерсияСреды;
СистемнаяИнформация = Новый СистемнаяИнформация;
ВерсияСреды = СистемнаяИнформация.Версия;
Лог.Отладка("ПроверитьВерсиюСреды: Перед вызовом СравнитьВерсии(ЭтаВерсия = <%1>, БольшеЧемВерсия = <%2>)", ТребуемаяВерсияСреды, ВерсияСреды);
Если РаботаСВерсиями.СравнитьВерсии(ТребуемаяВерсияСреды, ВерсияСреды) > 0 Тогда
ТекстСообщения = СтрШаблон(
"Ошибка установки пакета <%1>: Обнаружена устаревшая версия движка OneScript.
|Требуемая версия: %2
|Текущая версия: %3
|Обновите OneScript перед установкой пакета",
ИмяПакета,
ТребуемаяВерсияСреды,
ВерсияСреды
);

ВызватьИсключение ТекстСообщения;
КонецЕсли;

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

Процедура УстановитьЦелевойКаталог(Знач ЦелевойКаталогУстановки) Экспорт
Лог.Отладка("Каталог установки пакета '%1'", ЦелевойКаталогУстановки);
ФС.ОбеспечитьКаталог(ЦелевойКаталогУстановки);
Expand Down
2 changes: 1 addition & 1 deletion src/core/Модули/КонстантыOpm.os
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@
ПутьВЗапасномХранилище = "/download/";
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
ИмяЛога = "oscript.app.opm";
ВерсияПродукта = "0.16.3";
ВерсияПродукта = "1.0.0";
ИмяФайлаНастроек = "opm.cfg";
Loading

0 comments on commit 618df2f

Please sign in to comment.