Skip to content

Commit

Permalink
Merge branch 'release/v0.10.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Aug 2, 2017
2 parents 0f22254 + fe02c82 commit 3f1ad78
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 1 deletion.
109 changes: 109 additions & 0 deletions src/Классы/СборщикПакета.os
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
//
/////////////////////////////////////////////////////////////////////////

#Использовать fs
#Использовать logos
#Использовать tempfiles

Перем Лог;
Перем РабочийКаталог;
Перем ВремКаталогСборки;
Перем ОбработчикСобытийСборки;

//////////////////////////////////////////////////////////
// Сборка пакета
Expand All @@ -33,6 +35,8 @@
Лог.Информация("Начинаю сборку в каталоге " + РабочийКаталог);
УстановитьТекущийКаталог(РабочийКаталог);
УточнитьФайлМанифеста(ФайлМанифеста);
ИнициализироватьОбработчикСобытийСборки();
ВызватьСобытиеПередСборкой();
Манифест = ПрочитатьМанифест(ФайлМанифеста);
СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог);
УстановитьТекущийКаталог(ТекущийРабКаталог);
Expand Down Expand Up @@ -66,6 +70,19 @@

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

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

ПутьКФайлуСборки = ОбъединитьПути(ТекущийКаталог(), ИмяСкриптаСборки);
Если НЕ ФС.ФайлСуществует(ПутьКФайлуСборки) Тогда
Возврат;
КонецЕсли;

Лог.Отладка("Найден скрипт сборки пакета");
ОбработчикСобытийСборки = ЗагрузитьСценарий(ПутьКФайлуСборки);
КонецПроцедуры

Функция ПрочитатьМанифест(Знач ФайлМанифеста)

ОписаниеПакета = Новый ОписаниеПакета();
Expand Down Expand Up @@ -93,6 +110,8 @@

Архив.Записать();

ВызватьСобытиеПослеСборки(ФайлАрхива.ПолноеИмя);

Лог.Информация("Создана сборка %1", ФайлАрхива.ПолноеИмя);

КонецПроцедуры
Expand Down Expand Up @@ -174,12 +193,50 @@
АрхивЦелевойСистемы.Добавить(ПолныйПуть, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
КонецЦикла;

ВызватьСобытиеПриСборке(АрхивЦелевойСистемы);

АрхивЦелевойСистемы.Записать();

Архив.Добавить(ПутьАрхиваЦелевойСистемы, РежимСохраненияПутейZIP.НеСохранятьПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);

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

Процедура ВызватьСобытиеПередСборкой()
Если ОбработчикСобытийСборки = Неопределено Тогда
Возврат;
КонецЕсли;

Рефлектор = Новый Рефлектор;
Если Рефлектор.МетодСуществует(ОбработчикСобытийСборки, "ПередСборкой") Тогда
Лог.Отладка("Вызываю событие ПередСборкой");
ОбработчикСобытийСборки.ПередСборкой(РабочийКаталог);
КонецЕсли;
КонецПроцедуры

Процедура ВызватьСобытиеПриСборке(АрхивПакета)
Если ОбработчикСобытийСборки = Неопределено Тогда
Возврат;
КонецЕсли;

Рефлектор = Новый Рефлектор;
Если Рефлектор.МетодСуществует(ОбработчикСобытийСборки, "ПриСборке") Тогда
Лог.Отладка("Вызываю событие ПриСборке");
ОбработчикСобытийСборки.ПриСборке(РабочийКаталог, АрхивПакета);
КонецЕсли;
КонецПроцедуры

Процедура ВызватьСобытиеПослеСборки(ПутьКФайлуПакета)
Если ОбработчикСобытийСборки = Неопределено Тогда
Возврат;
КонецЕсли;

Рефлектор = Новый Рефлектор;
Если Рефлектор.МетодСуществует(ОбработчикСобытийСборки, "ПослеСборки") Тогда
Лог.Отладка("Вызываю событие ПослеСборки");
ОбработчикСобытийСборки.ПослеСборки(РабочийКаталог, ПутьКФайлуПакета);
КонецЕсли;
КонецПроцедуры

////////////////////////////////////////////////////////
// Подготовка пустого каталога под новый пакет

Expand Down Expand Up @@ -208,6 +265,8 @@
СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "docs");

ЗаписатьЗаготовкуСкриптаУстановки(ВыходнойКаталог.ПолноеИмя);
ЗаписатьЗаготовкуСкриптаСборки(ВыходнойКаталог.ПолноеИмя);

ЗаписатьЗаготовкуМанифестаБиблиотеки(ВыходнойКаталог.ПолноеИмя, ИмяПакета);

Лог.Информация("Готово");
Expand Down Expand Up @@ -265,6 +324,56 @@

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

Процедура ЗаписатьЗаготовкуСкриптаСборки(Знач Каталог)

Лог.Информация("Создаю заготовку скрипта сборки");

ИмяФайла = ОбъединитьПути(Каталог, КонстантыOpm.ИмяФайлаСкриптаСборки);
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла);
ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////");
ЗаписьТекста.ЗаписатьСтроку("// Сценарий сборки пакета ");
ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////
|
|");

ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером перед началом сборки пакета.");
ЗаписьТекста.ЗаписатьСтроку("// ");
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
ЗаписьТекста.ЗаписатьСтроку("// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.");
ЗаписьТекста.ЗаписатьСтроку("// ");
ЗаписьТекста.ЗаписатьСтроку("Процедура ПередСборкой(Знач РабочийКаталог) Экспорт");
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется");
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);

ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после помещения файлов в пакет.");
ЗаписьТекста.ЗаписатьСтроку("// ");
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
ЗаписьТекста.ЗаписатьСтроку("// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.");
ЗаписьТекста.ЗаписатьСтроку("// АрхивПакета - ЗаписьZIPФайла - ZIP-архив с содержимым пакета (включаемые файлы).");
ЗаписьТекста.ЗаписатьСтроку("// ");
ЗаписьТекста.ЗаписатьСтроку("Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт");
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется");
ЗаписьТекста.ЗаписатьСтроку(" // АрхивПакета.Добавить(ПолныйПутьНужногоФайла,
| // РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
| // РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);");
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);

ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после сборки пакета.");
ЗаписьТекста.ЗаписатьСтроку("// ");
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
ЗаписьТекста.ЗаписатьСтроку("// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.");
ЗаписьТекста.ЗаписатьСтроку("// ПутьКФайлуПакета - Строка - Полный путь к собранному файлу пакета.");
ЗаписьТекста.ЗаписатьСтроку("// ");
ЗаписьТекста.ЗаписатьСтроку("Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт");
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется");
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");

ЗаписьТекста.Закрыть();

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

Процедура ЗаписатьЗаготовкуМанифестаБиблиотеки(Знач Каталог, Знач ИмяПакета)

Лог.Информация("Создаю заготовку описания пакета");
Expand Down
4 changes: 3 additions & 1 deletion src/Модули/КонстантыOpm.os
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

Перем ИмяФайлаСпецификацииПакета Экспорт;
Перем ИмяФайлаСкриптаУстановки Экспорт;
Перем ИмяФайлаСкриптаСборки Экспорт;
Перем ИмяФайлаСодержимогоПакета Экспорт;
Перем ИмяФайлаМетаданныхПакета Экспорт;
Перем СерверУдаленногоХранилища Экспорт;
Expand All @@ -16,6 +17,7 @@

ИмяФайлаСпецификацииПакета = "packagedef";
ИмяФайлаСкриптаУстановки = "_install_.os";
ИмяФайлаСкриптаСборки = "_build_.os";
ИмяФайлаСодержимогоПакета = "content.zip";
ИмяФайлаМетаданныхПакета = "opm-metadata.xml";
СерверУдаленногоХранилища = "http://hub.oscript.io";
Expand All @@ -24,5 +26,5 @@
ПутьВЗапасномХранилище = "/download/";
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
ИмяЛога = "oscript.app.opm";
ВерсияПродукта = "0.9.8";
ВерсияПродукта = "0.10.0";
ИмяФайлаНастроек = "opm.cfg";

0 comments on commit 3f1ad78

Please sign in to comment.