﻿#Использовать fs
#Использовать asserts

////////////////////////////////////////////////////////////
// Описание пакета для сборки и установки
// Полную документацию см. на hub.oscript.io/packaging
//

///////////////////////////////////////////////////////////////////
// Процедуры установки пакета с клиентской машины        
///////////////////////////////////////////////////////////////////


// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину.
// 
// Параметры:
//   КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
// 
Процедура ПриУстановке(Знач КаталогУстановкиПакета, СтандартнаяОбработка) Экспорт

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


///////////////////////////////////////////////////////////////////
// Процедуры сборки пакета                                          
///////////////////////////////////////////////////////////////////


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


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

	Исходники = ЗагрузитьСценарий("tasks\Модули\Исходники.os");

	СлужебныйКаталог = ".forbuild";
	КлючМассиваПутей = "opm_build";
	
	//ФС.ОбеспечитьПустойКаталог(СлужебныйКаталог);
	СтрокаЗапуска = Исходники.СтрокаЗапускаКомандыСборки(Ложь, СлужебныйКаталог);
	СтрокаЗапуска = СтрШаблон("%1 --key %2", СтрокаЗапуска, КлючМассиваПутей);
	СтрокаЗапуска = СтрШаблон("%1 --cachekey %2", СтрокаЗапуска, КлючМассиваПутей);
	Исходники.ИсполнитьКоманду(СтрокаЗапуска);
	КаталогСборки = СтрШаблон("./%1/", СлужебныйКаталог);
	СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./lib/TemplateEpf %1lib/TemplateEpf --onlycopy --ibname /F./build/ibservice", КаталогСборки);
	Исходники.ИсполнитьКоманду(СтрокаЗапуска);
	
	СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./lib/TemplateEpfUF %1lib/TemplateEpfUF --onlycopy --ibname /F./build/ibservice", КаталогСборки);
	Исходники.ИсполнитьКоманду(СтрокаЗапуска);

	СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./locales %1locales --onlycopy --ibname /F./build/ibservice", КаталогСборки);
	Исходники.ИсполнитьКоманду(СтрокаЗапуска);
	
	Настройки = Исходники.ПолучитьИзJSONФайла(Исходники.ПутьФайлаНастроек());
	Ожидаем.Что(Настройки, "Не загружены настройки из файла настроек").Заполнено();
	
	МассивПутей = Настройки[КлючМассиваПутей];
	Ожидаем.Что(МассивПутей, "Не найдена настройка " + КлючМассиваПутей).Заполнено();
	
	ТекущийКаталогСохр = ТекущийКаталог();
	УстановитьТекущийКаталог(СлужебныйКаталог);

	УдалитьФайлы("./features/libraries/VB", "*.*");

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

		МассивОбработок = НайтиФайлы(".", "*.epf");
		Для каждого Файл Из МассивОбработок Цикл
			Путь = Файл.Имя;

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

	Исключение
		УстановитьТекущийКаталог(ТекущийКаталогСохр);
		ВызватьИсключение;
	КонецПопытки;
	УстановитьТекущийКаталог(ТекущийКаталогСохр);
	
КонецПроцедуры


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

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

Описание.Имя("add")
	.Версия("5.0.0.124")
	.Автор("Silver Bulleters")
	.Описание("Сборка add")
	.ВерсияСреды("1.0.19")
	// автоматически собираются все файлы из файла "ospx/settings.json" + корневые обработки
	.ВключитьФайл("lib/TemplateEpfUF")
	.ВключитьФайл("lib/TemplateEpf")
	.ВключитьФайл("license")
	.ВключитьФайл("licenses")
	.ВключитьФайл("locales")
	.ВключитьФайл("tasks")
	.ВключитьФайл("ospx")
	.ВключитьФайл("packagedef")
	.ЗависитОт("asserts")
	.ЗависитОт("1commands", "1.3.0")
	.ЗависитОт("logos", "0.6.2")
	.ЗависитОт("cmdline", "0.6.2")
	.ЗависитОт("tempfiles", "0.2.1")
	.ЗависитОт("v8runner", "0.11.2")
	.ЗависитОт("v8unpack", "1.0.1")
	.ЗависитОт("fs", "0.5.0")
	.ОпределяетМодуль("add", "ospx/addospx.os")
	;
