Skip to content

Commit

Permalink
Merge branch 'release/v0.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Dec 29, 2016
2 parents 7ff3aa7 + e4bbe6a commit 34fa428
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 7 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

Описание.Имя("opm")
.Версия("0.7.0")
.Версия("0.8.0")
.ЗависитОт("logos")
.ЗависитОт("cmdline")
.ЗависитОт("tempfiles")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,15 @@

Процедура ДобавитьКомандуInstall(Знач Парсер)
Команда = Парсер.ОписаниеКоманды("install", "Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef.");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-all", "Установить все пакеты, зарегистрированные в хабе");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-f", "Указать файл из которого нужно установить пакет");
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета");
Парсер.ДобавитьКоманду(Команда);
КонецПроцедуры

Процедура ДобавитьКомандуUpdate(Знач Парсер)
Команда = Парсер.ОписаниеКоманды("update", "Обновить пакет");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-all", "Обновить все установленные пакеты");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-f", "Указать файл из которого нужно установить пакет");
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета");
Парсер.ДобавитьКоманду(Команда);
Expand Down Expand Up @@ -125,7 +127,9 @@
Процедура УстановитьПакет(Знач ЗначенияПараметров) Экспорт

Установщик = Новый УстановкаПакета;
Если ЗначенияПараметров["-f"] = Неопределено И ЗначенияПараметров["ИмяПакета"] = Неопределено Тогда
Если ЗначенияПараметров["-all"] Тогда
Установщик.УстановитьВсеПакетыИзОблака();
ИначеЕсли ЗначенияПараметров["-f"] = Неопределено И ЗначенияПараметров["ИмяПакета"] = Неопределено Тогда
Установщик.УстановитьПакетыПоОписаниюПакета();
ИначеЕсли ЗначенияПараметров["-f"] <> Неопределено Тогда
Установщик.УстановитьПакетИзАрхива(ЗначенияПараметров["-f"]);
Expand Down Expand Up @@ -159,7 +163,9 @@
Процедура ОбновитьПакет(Знач ЗначенияПараметров) Экспорт

Установщик = Новый УстановкаПакета;
Если ЗначенияПараметров["-f"] <> Неопределено Тогда
Если ЗначенияПараметров["-all"] Тогда
Установщик.ОбновитьУстановленныеПакеты();
ИначеЕсли ЗначенияПараметров["-f"] <> Неопределено Тогда
Установщик.УстановитьПакетИзАрхива(ЗначенияПараметров["-f"]);
Иначе
Установщик.ОбновитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"]);
Expand Down Expand Up @@ -215,7 +221,7 @@
ТихийРежим = ЗначенияПараметров["-q"];

Если ЗначенияПараметров["-remote"] Тогда
ТекстСообщения = СтрШаблон("Пакеты в хабе :");
ТекстСообщения = СтрШаблон("Пакеты в хабе:");
КэшПакетовВХабе = Новый КэшПакетовХаба();
УстановленныеПакеты = КэшПакетовВХабе.ПолучитьПакетыХаба();
Иначе
Expand All @@ -232,7 +238,12 @@
КонецЕсли;

Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл
Сообщить(УстановленныйПакет.Ключ);
СтрокаСообщения = УстановленныйПакет.Ключ;
Если ТипЗнч(УстановленныйПакет.Значение) = Тип("ОписаниеПакета") Тогда
ОписаниеПакета = УстановленныйПакет.Значение;
СтрокаСообщения = СтрокаСообщения + "@" + ОписаниеПакета.Свойства().Версия;
КонецЕсли;
Сообщить(СтрокаСообщения);
КонецЦикла;

КонецПроцедуры
Expand Down
19 changes: 17 additions & 2 deletions src/Классы/КэшУстановленныхПакетов.os
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,23 @@

Процедура ДобавитьУстановленныйПакет(Знач ФайлКаталога)

// TODO - здесь какое-то мета-описание нужно вместо Истины
УстановленныеПакеты.Вставить(ФайлКаталога.Имя, Истина);
ПутьКФайлуМетаданных = ОбъединитьПути(ФайлКаталога.ПолноеИмя, Константы.ИмяФайлаМетаданныхПакета);
ФайлМетаданных = Новый Файл(ПутьКФайлуМетаданных);
Если ФайлМетаданных.Существует() Тогда

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлуМетаданных);
Лог.Отладка("XML загружен");
Сериализатор = Новый СериализацияМетаданныхПакета;
МетаОписаниеПакета = Сериализатор.ПрочитатьXML(Чтение);

Чтение.Закрыть();

Иначе
МетаОписаниеПакета = Истина;
КонецЕсли;

УстановленныеПакеты.Вставить(ФайлКаталога.Имя, МетаОписаниеПакета);

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

Expand Down
27 changes: 27 additions & 0 deletions src/Классы/УстановкаПакета.os
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
Если СтандартнаяОбработка Тогда
СгенерироватьСкриптыЗапускаПриложенийПриНеобходимости(ПутьУстановки.ПолноеИмя, Метаданные);
КонецЕсли;
СохранитьФайлМетаданныхПакета(ПутьУстановки.ПолноеИмя, ФайлМетаданных);

ЧтениеПакета.Закрыть();

Expand Down Expand Up @@ -114,13 +115,31 @@

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

Процедура УстановитьВсеПакетыИзОблака() Экспорт

КэшПакетовХаба = Новый КэшПакетовХаба();
ПакетыХаба = КэшПакетовХаба.ПолучитьПакетыХаба();
Для Каждого КлючИЗначение Из ПакетыХаба Цикл
УстановитьПакетИзОблака(КлючИЗначение.Ключ);
КонецЦикла;

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

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

ИмяВерсияПакета = РаботаСВерсиями.РазобратьИмяПакета(ИмяПакета);
СкачатьИУстановитьПакет(ИмяВерсияПакета.ИмяПакета, ИмяВерсияПакета.Версия);

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

Процедура ОбновитьУстановленныеПакеты() Экспорт
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов;
УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();
Для Каждого КлючИЗначение Из УстановленныеПакеты Цикл
ОбновитьПакетИзОблака(КлючИЗначение.Ключ);
КонецЦикла;
КонецПроцедуры

Функция НайтиСоздатьКаталогУстановки(Знач ИдентификаторПакета)

СистемныеБиблиотеки = КаталогСистемныхБиблиотек();
Expand Down Expand Up @@ -381,6 +400,14 @@

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

Процедура СохранитьФайлМетаданныхПакета(Знач КаталогУстановки, Знач ПутьКФайлуМетаданных)

ПутьСохранения = ОбъединитьПути(КаталогУстановки, Константы.ИмяФайлаМетаданныхПакета);
ДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлуМетаданных);
ДанныеФайла.Записать(ПутьСохранения);

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

//////////////////////////////////////////////////////////////////////////////////
//

Expand Down

0 comments on commit 34fa428

Please sign in to comment.