Skip to content

Commit

Permalink
Merge branch 'release/v2.2.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
zeratulayuris committed Oct 23, 2019
2 parents c48a5d8 + 83562ee commit bdd2930
Show file tree
Hide file tree
Showing 14 changed files with 433 additions and 331 deletions.
20 changes: 17 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,28 @@ oscript v8files-extractor.os ?
Разбор файлов на исходники
--help
Показ этого экрана
--git-check-config
Проверка настроек репозитория git
--git-precommit outputPath [--remove-orig-bin-files]
Запустить чтение индекса из git и определить список файлов для разбора, разложить их и добавить исходники в индекс
Если передан флаг --remove-orig-bin-files, обработанные файлы epf/ert будут удалены из индекса git
Если передан флаг --remove-orig-bin-files, обработанные файлы epf/erf будут удалены из индекса git
--compile inputPath outputPath [--recursive]
Собрать внешний файл/обработку.
Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога
--install
--install [--remove-orig-bin-files]
Установить precommit1c для текущего репозитория git
Если передан флаг --remove-orig-bin-files, обработанные файлы epf/erf будут удалены из индекса git
Общие параметры:
--use-designer
Если передан этот флаг, то для операций сборки/разборки будет использован конфигуратор 1С.
ТОЛЬКО ДЛЯ ВЕРСИЙ ПЛАТФОРМЫ 8.3.8 И ВЫШЕ!
--ib-connection-string
Строка подключения к информационной базе (для Windows-путей обязательно экранировать '\' так: '\\'!)
--ib-user
Имя пользователя в информационной базе
--ib-pwd
Пароль пользователя в информационной базе
```

## Ограничения
Expand Down Expand Up @@ -135,7 +149,7 @@ git config --local core.longpaths true
1. Нужно выполнить следующее:

* добавить нужную обработку в индекс git - например, `git add XXX.epf`
* установить переменную среды `LOGOS_CONFIG` или заполнить спец.файл настройки логов
* установить переменную среды `LOGOS_CONFIG` или заполнить спец.файл настройки логов
* выполнить `git commit` или `precommit1c --git-precommit`

+ Например, рядом с файлом `v8files-extractor.os` положить файл `logos.cfg` со следующим текстом `logger.rootLogger=DEBUG`
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

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

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ВРабочемКаталогеСодержатсяИсходникиОбработкиВФормате");
ВсеШаги.Добавить("ВПодпапкеРабочегоКаталогаСодержатсяИсходникиОбработкиВФормате");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

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

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

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


//в подпапке "src/1" рабочего каталога содержатся исходники обработки "Fixture" в формате "v8reader"
Процедура ВПодпапкеРабочегоКаталогаСодержатсяИсходникиОбработкиВФормате(Знач Подпапка, Знач ИмяОбработки, Знач Формат) Экспорт
Если Формат = "v8reader" Тогда
ИмяКаталогаИсходниковОбработки = ОбъединитьПути(Подпапка, ИмяОбработки);
ПроверяемИсходникиВРабочемКаталоге(ИмяКаталогаИсходниковОбработки, ОписаниеИсходниковФорматаV8reader());
ИначеЕсли Формат = "designer" Тогда
ИмяКаталогаИсходниковОбработки = ОбъединитьПути(Подпапка, ИмяОбработки);
ПроверяемИсходникиВРабочемКаталоге(ИмяКаталогаИсходниковОбработки, ОписаниеИсходниковФорматаКонфигуратора(ИмяОбработки));
КонецЕсли;
КонецПроцедуры

//в рабочем каталоге содержатся исходники обработки "Fixture" в формате "v8reader"
Процедура ВРабочемКаталогеСодержатсяИсходникиОбработкиВФормате(Знач ИмяОбработки, Знач Формат) Экспорт
Если Формат = "v8reader" Тогда
ПроверяемИсходникиВРабочемКаталоге(ИмяОбработки, ОписаниеИсходниковФорматаV8reader());
ИначеЕсли Формат = "designer" Тогда
ПроверяемИсходникиВРабочемКаталоге(ИмяОбработки, ОписаниеИсходниковФорматаКонфигуратора(ИмяОбработки));
КонецЕсли;
КонецПроцедуры

//{ Служебные методы

Функция РабочийКаталог()
Возврат БДД.ПолучитьИзКонтекста("РабочийКаталог");
КонецФункции

Функция КаталогПроекта()
Возврат БДД.ПолучитьИзКонтекста("КаталогПроекта");
КонецФункции

Процедура ПроверяемИсходникиВРабочемКаталоге(ИмяОбработки, ОписаниеИсходников)
ПроверяемСуществованиеФайлаВРабочемКаталоге(ИмяОбработки, Ложь);
Для каждого КлючИЗначение из ОписаниеИсходников Цикл
ПроверяемСуществованиеФайлаВРабочемКаталоге(ОбъединитьПути(ИмяОбработки, КлючИЗначение.Ключ), КлючИЗначение.Значение);
КонецЦикла;
КонецПроцедуры

Процедура ПроверяемСуществованиеФайлаВРабочемКаталоге(ПутьКФайлу, ЭтоФайл)
Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьКФайлу));
Ожидаем.Что(Файл.Существует(), ПутьКФайлу + " должен существовать, а это не так!").ЭтоИстина();
СтрокаОшибки = СтрШаблон("%1: значение Файл.ЭтоФайл() должно %2, а это не так!", ПутьКФайлу, ЭтоФайл);
Ожидаем.Что(Файл.ЭтоФайл() = ЭтоФайл, СтрокаОшибки).ЭтоИстина();
КонецПроцедуры

Функция ОписаниеИсходниковФорматаV8reader()
Описание = Новый Соответствие;
Описание.Вставить("renames.txt", Истина);
Описание.Вставить("Form", Ложь);
Описание.Вставить("Макеты", Ложь);
Описание.Вставить("und", Ложь);
Возврат Описание;
КонецФункции

Функция ОписаниеИсходниковФорматаКонфигуратора(ИмяОбработки)
Описание = Новый Соответствие;
Описание.Вставить(ИмяОбработки + ".xml", Истина);
Описание.Вставить(ИмяОбработки, Ложь);
Описание.Вставить(ОбъединитьПути(ИмяОбработки, "Forms"), Ложь);
Описание.Вставить(ОбъединитьПути(ИмяОбработки, "Templates"), Ложь);
Возврат Описание;
КонецФункции

//}
110 changes: 110 additions & 0 deletions features/step_definitions/РепозиторийGit.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
#Использовать 1commands
#Использовать asserts

Перем БДД; //контекст фреймворка 1bdd
Перем Лог;

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ЯУстанавливаюPrecommitВРабочийКаталогСПараметрами");
ВсеШаги.Добавить("ВРабочемКаталогеУстановленPrecommit");
ВсеШаги.Добавить("ФайлХукаВРепозиторииРабочегоКаталогаСодержит");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

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

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

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

// Я устанавливаю Precommit в рабочий каталог с параметрами "Параметры"
Процедура ЯУстанавливаюPrecommitВРабочийКаталогСПараметрами(Знач Параметры) Экспорт

ПараметрыКоманды = Новый Массив;
ПараметрыКоманды.Добавить(ОбъединитьПути(КаталогПроекта(), "v8files-extractor.os"));
ПараметрыКоманды.Добавить("--install");
Если ЗначениеЗаполнено(Параметры) Тогда
ПараметрыКоманды.Добавить(ЗаменитьШаблоныВПараметрахКоманды(Параметры));
КонецЕсли;

Команда = Новый Команда;

Команда.УстановитьКоманду("oscript");
Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
Команда.УстановитьРабочийКаталог(РабочийКаталог());
Команда.ДобавитьПараметры(ПараметрыКоманды);

Лог.Отладка("Устанавливаем precommit1c с параметрами %1", СтрСоединить(Команда.ПолучитьПараметры(), " "));

КодВозврата = Команда.Исполнить();

Если КодВозврата <> 0 Тогда
Лог.Ошибка("Получен ненулевой код возврата " + КодВозврата + ". Выполнение скрипта остановлено!");
ВызватьИсключение СокрЛП(Команда.ПолучитьВывод());
Иначе
Лог.Отладка("Код возврата равен 0");
КонецЕсли;

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

// Файл хука в репозитории рабочего каталога содержит "Параметры"
Процедура ФайлХукаВРепозиторииРабочегоКаталогаСодержит(Знач Параметры) Экспорт
СтрокаШага = СтрШаблон("файл "".git/hooks/pre-commit"" в рабочем каталоге содержит ""oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src %1""",
Параметры);
БДД.ВыполнитьШаг(СтрокаШага);
КонецПроцедуры

//в рабочем каталоге установлен precommit
Процедура ВРабочемКаталогеУстановленPrecommit() Экспорт
ПроверяемСуществованиеФайлаВРабочемКаталоге(".git/hooks");
ПроверяемСуществованиеФайлаВРабочемКаталоге(".git/hooks/v8Reader");
ПроверяемСуществованиеФайлаВРабочемКаталоге(".git/hooks/tools");
ПроверяемСуществованиеФайлаВРабочемКаталоге(".git/hooks/v8Reader/V8Reader.epf");
ПроверяемСуществованиеФайлаВРабочемКаталоге(".git/hooks/pre-commit");
ПроверяемСуществованиеФайлаВРабочемКаталоге(".git/hooks/v8files-extractor.os");
ПроверяемСуществованиеФайлаВРабочемКаталоге(".git/hooks/tools/v8unpack.exe");
КонецПроцедуры

//{ Служебные методы

Функция РабочийКаталог()
Возврат БДД.ПолучитьИзКонтекста("РабочийКаталог");
КонецФункции

Функция КаталогПроекта()
Возврат БДД.ПолучитьИзКонтекста("КаталогПроекта");
КонецФункции

Процедура ПроверяемСуществованиеФайлаВРабочемКаталоге(ПутьКФайлу)
Файл = Новый Файл(ОбъединитьПути(РабочийКаталог(), ПутьКФайлу));
Ожидаем.Что(Файл.Существует(), ПутьКФайлу + " должен существовать, а это не так!").ЭтоИстина();
КонецПроцедуры

Функция ЗаменитьШаблоныВПараметрахКоманды(Знач ПараметрыКоманды)
Рез = СтрЗаменить(ПараметрыКоманды, "<КаталогПроекта>", ЭкранированныйПуть(КаталогПроекта()));
Рез = СтрЗаменить(Рез, "<РабочийКаталог>", ЭкранированныйПуть(РабочийКаталог()));
Возврат Рез;
КонецФункции

Функция ЭкранированныйПуть(Знач Путь)
Рег = Новый РегулярноеВыражение("(?<!\\)\\(?!\\)");
Рез = Рег.Заменить(Путь, "\\");
Возврат Рез;
КонецФункции

//}

Лог = Логирование.ПолучитьЛог("bdd");
52 changes: 0 additions & 52 deletions features/step_definitions/СтроковыеОперации.os

This file was deleted.

Loading

0 comments on commit bdd2930

Please sign in to comment.