﻿#Использовать 1commands

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

#Область УстановкаПакетаНаКлиентскойМашине

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

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

#КонецОбласти

#Область СборкаПакета

// Вызывается пакетным менеджером перед началом сборки пакета.
//
// Параметры:
//   РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
//
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
	СобратьПакетСЛокальнымиЗависимостями(РабочийКаталог);
	
	Команда = Новый Команда;
	Команда.УстановитьПравильныйКодВозврата(0);
	Команда.ПоказыватьВыводНемедленно(Истина);
	Команда.УстановитьРабочийКаталог(РабочийКаталог);
	Команда.УстановитьСтрокуЗапуска("oscript src/main.os compileepf epf epf --v8version 8 --root """ + РабочийКаталог + """");
	КодВозврата = Команда.Исполнить();
	Сообщить("Вывод команды  " + Команда.ПолучитьВывод());
	Если КодВозврата <> 0 Тогда
		ВызватьИсключение СтрШаблон("Код возврата не равен 0, а равен %1", КодВозврата);
	КонецЕсли;
КонецПроцедуры

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Процедура СобратьПакетСЛокальнымиЗависимостями(Знач РабочийКаталог) Экспорт

    Попытка
		УдалитьФайлы(ОбъединитьПути(РабочийКаталог, "oscript_modules"), "*.*");
	Исключение
		// При удалении иногда возникают ошибки, но это не критично
	КонецПопытки;

    Команда = Новый Команда;
    Команда.УстановитьПравильныйКодВозврата(0);
    Команда.ПоказыватьВыводНемедленно(Истина);
    Команда.УстановитьСтрокуЗапуска("opm install -l");
    Команда.УстановитьРабочийКаталог(РабочийКаталог);
    КодВозврата = Команда.Исполнить();
    
    Если КодВозврата <> 0 Тогда
        ВызватьИсключение СтрШаблон("Ошибка сборки пакета. Код возврата: %1", КодВозврата);
    КонецЕсли;

	ВосстановитьНастройкиЗависимостейВ_oscript_cfg();

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

// TODO до исправления бага opm - удаляется строки с lib.system
Процедура ВосстановитьНастройкиЗависимостейВ_oscript_cfg()
	ИмяФайлаНастройки = "oscript.cfg";
	ИмяФайлаШаблона = "oscript-template.cfg";

	Каталоги = КаталогиС_oscript_cfg();
	Для Каждого Каталог Из Каталоги Цикл
		КопироватьФайл(ОбъединитьПути("tools", ИмяФайлаШаблона), ОбъединитьПути(Каталог, ИмяФайлаНастройки));
	КонецЦикла;
КонецПроцедуры

Функция КаталогиС_oscript_cfg()

	Результат = Новый Массив;
	Результат.Добавить("src");
	Результат.Добавить("tools");

	Возврат Новый ФиксированныйМассив(Результат);

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

#КонецОбласти


Описание.Имя("vanessa-runner")
		.Версия("2.6.1")
		.ВерсияСреды("1.9.2")
		.АдресРепозитория("https://github.com/vanessa-opensource/vanessa-runner")

		.ЗависитОт("1commands", "1.5.0")
		.ЗависитОт("asserts", "1.6.1")
		.ЗависитОт("cli-selector", "0.5.0")
		.ЗависитОт("cmdline", "1.0.0")
		.ЗависитОт("fluent", "0.6.1")
		.ЗависитОт("fs", "1.2.0")
		.ЗависитОт("ibcmdrunner", "0.3.3")
		.ЗависитОт("json", "1.1.2")
		.ЗависитОт("logos", "1.7.1")
		.ЗависитОт("packageinfo", "1.1.1")    
		.ЗависитОт("ParserFileV8i", "0.0.5")
		.ЗависитОт("semver", "1.1.1")
		.ЗависитОт("strings", "0.5.0")
		.ЗависитОт("tempfiles", "1.1.1")
		.ЗависитОт("v8find", "0.3.1")
		.ЗависитОт("v8runner", "1.13.1")
		.ЗависитОт("v8storage", "0.9.4")
		.ЗависитОт("v8unpack", "1.0.8")
		.ЗависитОт("gitrunner", "1.8.0")

		.РазработкаЗависитОт("1bdd", "1.15.1")
		.РазработкаЗависитОт("1testrunner", "1.9.2")
		.РазработкаЗависитОт("add", "6.8.0")
		.РазработкаЗависитОт("coverage", "0.7.0")

		.ВключитьФайл("tools")
		.ВключитьФайл("src")
		.ВключитьФайл("features")
		.ВключитьФайл("epf")
		.ВключитьФайл("oscript_modules")
		.ВключитьФайл("packagedef")

		.ВключитьФайл("examples")
		.ВключитьФайл("readme.md")
		.ВключитьФайл("LICENSE")
		.ВключитьФайл("vanessa-runner-schema.json")

		.ОпределяетКласс("runner", "tools/runner.os")

		.ИсполняемыйФайл("src/main.os", "runner")
		.ИсполняемыйФайл("src/main.os", "vrunner")
		.ИсполняемыйФайл("src/main.os", "vanessa-runner")

		.ИсполняемыйФайл("tools/runner.os", "runner-old");
