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

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

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

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

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

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

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

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

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

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

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

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

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

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

    СистемнаяИнформация = Новый СистемнаяИнформация;
    ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
    Если ЭтоWindows Тогда
        ИмяУтилиты = КаталогПрограммы() + "\opm.bat";
    Иначе
        ИмяУтилиты = "opm";
    КонецЕсли;

    СтрокаЗапуска = СтрШаблон("%1 install -l", ИмяУтилиты);
	Сообщить(СтрокаЗапуска);

    Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог);
    Процесс.Запустить();
    Процесс.ОжидатьЗавершения();

    Если Процесс.КодВозврата <> 0 Тогда
        ВызватьИсключение "Ошибка сборки пакета";
    КонецЕсли;

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

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

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

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

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

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

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

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

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


Описание.Имя("vanessa-runner")
		.Версия("2.5.0")
		.ВерсияСреды("1.9.0")

		.ЗависитОт("1commands", "1.5.0")
		.ЗависитОт("asserts", "1.4.0")
		.ЗависитОт("cli-selector", "0.5.0")
		.ЗависитОт("cmdline", "1.0.0")
		.ЗависитОт("fluent", "0.6.1")
		.ЗависитОт("fs", "1.2.0")
		.ЗависитОт("ibcmdrunner", "0.3.0")
		.ЗависитОт("json", "1.1.1")
		.ЗависитОт("logos", "1.7.0")
		.ЗависитОт("ParserFileV8i", "0.0.5")
		.ЗависитОт("semver", "0.5.2")
		.ЗависитОт("strings", "0.5.0")
		.ЗависитОт("tempfiles", "1.0.0")
		.ЗависитОт("v8find", "0.3.0")
		.ЗависитОт("v8runner", "1.10.0")
		.ЗависитОт("v8storage", "0.6.5")
		.ЗависитОт("v8unpack", "1.0.6")
		.ЗависитОт("packageinfo", "1.0")
		.ЗависитОт("gitrunner", "1.7.1")

		.РазработкаЗависитОт("1bdd", "1.14.0")
		.РазработкаЗависитОт("1testrunner", "1.8.0")
		.РазработкаЗависитОт("add", "6.8.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");
