Skip to content

Commit

Permalink
Merge branch 'release/1.21'
Browse files Browse the repository at this point in the history
  • Loading branch information
bia-tech committed Feb 21, 2020
2 parents 7bc6ba5 + 2932673 commit 4bbe828
Show file tree
Hide file tree
Showing 35 changed files with 2,963 additions and 663 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ bdd-log.xml
*.ospx
*.orig
exec.log
.vscode
/tests.xml
.vscode/
/tests.xml
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,38 @@ precommit4onec может читать настройки своей работ

Предоставляется возможность в репозитории иметь свои, отличные от глобальных, настройки. Для этого необходимо вместо флага `-global` в указанных выше командах передавать параметр `-rep-path` с указанием пути к каталогу репозитория.

Также можно настроить различное поведение для различных каталогов репозитория, для работы с подкаталогами (проектами) используется ключ `-child-path`.
Настройки проектов полностью переопределяют базовые настройки. Например если в основной настройки указаны `ОтключенныеСценарии`,
а для проекта `configuration\` они не заполнены, то для каталога `configuration` будут выполнены все сценарии.

Конфигурирование дает возможности:

- Изменить список сценариев обработки файлов
- Активизировать алгоритм подключения сценариев из каталогов репозитория

Некоторые сценарии поддерживают возможность изменения своих настроек со значений по умолчанию на установленные в конфигурационном файле. На данный момент реализована возможность указывать необходимую версию платформы 1С:Предприятие в сценарии `РазборОтчетОбработокРасширений`.

### Структура файла настроек

```JSON
{
"Precommt4onecСценарии": {
"ИспользоватьСценарииРепозитория": false, // Признак, выполнения проверок из репозитория
"КаталогЛокальныхСценариев": "", // Относительный путь к каталогу локальных проверок
"ГлобальныеСценарии": [...], // Список проверок, которые будут выполнятся
"ОтключенныеСценарии": [...], // Список проверок, которые не будут выполнятся (имеет больший приоритет относительно ГлобальныеСценарии)
"НастройкиСценариев": { // Настройки выполняемых проверок
...
},
"Проекты":{ // Настройки проектов (подкаталогов репозитория). Настройки проектов полностью переопределяют настройки и имеют такую же структуру
"configuration\\": { // Имя проекта (подкаталога)
"ИспользоватьСценарииРепозитория": false,
"ГлобальныеСценарии": []
}
}
}
}```

## Расширение функциональности

Для создания нового сценария обработки файлов необходимо воспользоваться шаблоном, находящимся в каталоге `СценарииОбработки` скрипта.
Expand Down
18 changes: 10 additions & 8 deletions features/step_definitions/precommitonec_feature.os
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
ВсеШаги.Добавить("ВКаталогеРепозиторияЕстьФайл");
ВсеШаги.Добавить("ЯКопируюФайлВКаталогРепозитория");
ВсеШаги.Добавить("ЯФиксируюИзмененияВРепозиторииСКомментарием");
ВсеШаги.Добавить("ЯУстанавливаюКодировкуВыводаКоманды");
ВсеШаги.Добавить("УФайлаЕстьМетка");
ВсеШаги.Добавить("СодержимоеФайлаИФайлаРазное");
ВсеШаги.Добавить("ЯСоздаюНовыйРепозиторийБезИнициализацииВКаталогеИЗапоминаюЕгоКак");
ВсеШаги.Добавить("ЯСоздаюФайлВКодировкеСТекстом");

Возврат ВсеШаги;
КонецФункции
Expand Down Expand Up @@ -117,13 +117,6 @@

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

// я устанавливаю кодировку вывода "Кодировка" команды "ИмяКоманды"
Процедура ЯУстанавливаюКодировкуВыводаКоманды(Кодировка, ИмяКоманды) Экспорт
КлючКонтекста = КлючКоманды(ИмяКоманды);
Команда = БДД.ПолучитьИзКонтекста(КлючКонтекста);
Команда.УстановитьКодировкуВывода(Кодировка);
КонецПроцедуры

Функция КлючКоманды(Знач ИмяКоманды)
Возврат "Команда-" + ИмяКоманды;
КонецФункции
Expand Down Expand Up @@ -154,6 +147,15 @@

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


//Я создаю файл "СпециальныйКаталог/ФайлСТекстом.txt" в кодировке "cp866" с текстом "текст178"
Процедура ЯСоздаюФайлВКодировкеСТекстом(Знач ПутьФайла, Знач Кодировка, Знач ТекстФайла) Экспорт
ПутьФайла = БДД.ПолучитьПутьФайлаСУчетомПеременныхКонтекста(ПутьФайла);
ЗаписьТекста = Новый ЗаписьТекста(ПутьФайла, Кодировка);
ЗаписьТекста.ЗаписатьСтроку(ТекстФайла);
ЗаписьТекста.Закрыть();
КонецПроцедуры

Функция ИнициализироватьРепозиторий(РепозиторийGit, ИмяРепозитория, АлиасКаталога)

КаталогРепозиториев = БДД.ПолучитьИзКонтекста(АлиасКаталога);
Expand Down
85 changes: 85 additions & 0 deletions features/ИнтерактивнаяНастройка.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# language: ru

Функциональность: Настройка конфигурации прекоммита

Как разработчик
Я хочу иметь возможность изменять настройки precommit4onec
Чтобы автоматически выполнять обработку исходников перед фиксацией изменений в репозитории

Контекст:
Допустим Я очищаю параметры команды "oscript" в контексте
И я очищаю параметры команды "git" в контексте
И Я устанавливаю кодировку вывода "utf-8" команды "git"
И я включаю отладку лога с именем "oscript.app.precommit4onec"
И я создаю временный каталог и запоминаю его как "КаталогРепозиториев"
И я переключаюсь во временный каталог "КаталогРепозиториев"
И я создаю новый репозиторий без инициализации "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "РабочийКаталог"
# И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
И я установил рабочий каталог как текущий каталог

Сценарий: Настройки глобальных сценариев
Когда Я создаю файл "answers.txt" в кодировке "cp866" с текстом
"""
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
local
n
"""
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -rep-path .\ -config < answers.txt"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Файл "v8config.json" содержит
"""
"ИспользоватьСценарииРепозитория": true,
"КаталогЛокальныхСценариев": "local",
"ГлобальныеСценарии": [
"ДобавлениеПробеловПередКлючевымиСловами.os",
"ЗапретИспользованияПерейти.os",
"ИсправлениеНеКаноническогоНаписания.os",
"КорректировкаXMLФорм.os",
"ОтключениеПолнотекстовогоПоиска.os",
"ПроверкаДублейПроцедурИФункций.os",
"ПроверкаКорректностиОбластей.os",
"РазборОбычныхФормНаИсходники.os",
"РазборОтчетовОбработокРасширений.os",
"СинхронизацияОбъектовМетаданныхИФайлов.os",
"СортировкаДереваМетаданных.os",
"УдалениеДублейМетаданных.os",
"УдалениеЛишнихКонцевыхПробелов.os",
"УдалениеЛишнихПустыхСтрок.os"
],
"""

Сценарий: Настройки подпроекта
Когда Я создаю файл "answers.txt" в кодировке "cp866" с текстом
"""
n
n
n
y
tests
n
n
n
n
"""
И Я создаю каталог "tests" в рабочем каталоге
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -rep-path .\ -config < answers.txt"
И Я сообщаю вывод команды "oscript"
Тогда Код возврата команды "oscript" равен 0
И Файл "v8config.json" содержит "tests\\"

20 changes: 16 additions & 4 deletions features/Конфигурирование.feature
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,38 @@
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v1.20.1"
И Вывод команды "oscript" содержит "precommit4onec v1.21"
И Вывод команды "oscript" содержит "Установленные настройки:"
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
И Вывод команды "oscript" содержит "ГлобальныеСценарии ="
И Вывод команды "oscript" содержит "НастройкиСценариев ="

Сценарий: Сброс настроек, не должен приводить к удалению других настроек
Когда я создаю временный каталог и запоминаю его как "КаталогРепозиториев"
И я переключаюсь во временный каталог "КаталогРепозиториев"
И я создаю новый репозиторий без инициализации "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "РабочийКаталог"
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
И я установил рабочий каталог как текущий каталог
И Я копирую файл "tests\fixturesранениеРазныхНастроек\v8config.json" в каталог репозитория "rep1"
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -rep-path . -reset"
Тогда Файл "v8config.json" в рабочем каталоге содержит "GLOBAL"


Сценарий: Сброс настроек к значениям по умолчанию
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global -reset"
Тогда Код возврата команды "oscript" равен 0
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
И Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит
И Вывод команды "oscript" содержит
"""
precommit4onec v1.20.1
Установленные настройки: Precommt4onecСценарии
precommit4onec v1.21
Установленные настройки: Базовые настройки
ИспользоватьСценарииРепозитория = Нет
КаталогЛокальныхСценариев =
ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОтключениеПолнотекстовогоПоиска.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиОбластей.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
ОтключенныеСценарии =
НастройкиСценариев = Соответствие
ОтключениеПолнотекстовогоПоиска = Соответствие
МетаданныеДляИсключения = Соответствие
Expand Down
28 changes: 15 additions & 13 deletions features/ПростыеКоманды.feature
Original file line number Diff line number Diff line change
Expand Up @@ -14,34 +14,36 @@
Сценарий: Получение версии продукта
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
Тогда Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "1.20.1"
И Вывод команды "oscript" содержит "1.21"
И Вывод команды "oscript" не содержит "precommit4onec v"
И Код возврата команды "oscript" равен 0

Сценарий: Получение помощи продукта
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
Тогда Вывод команды "oscript" содержит
"""
precommit4onec v1.20.1
precommit4onec v1.21
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
precommit - Выполняет сценарии precommit
install - Выполняет подключение (установку) precommit hook'а в репозиторий
configure - Выполняет настройку репозитория
help - Выводит справку по командам
version - Выводит версию приложения
precommit - Выполняет сценарии precommit
install - Выполняет подключение (установку) precommit hook'а в репозиторий
configure - Выполняет настройку репозитория
exec-rules - Выполняет указанные сценарии в каталоге репозитория принудительно, без обращения к git
"""
И Код возврата команды "oscript" равен 0

Сценарий: Вызов исполняемого файла без параметров
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
Тогда Вывод команды "oscript" содержит
"""
precommit4onec v1.20.1
precommit4onec v1.21
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
precommit - Выполняет сценарии precommit
install - Выполняет подключение (установку) precommit hook'а в репозиторий
configure - Выполняет настройку репозитория
help - Выводит справку по командам
version - Выводит версию приложения
precommit - Выполняет сценарии precommit
install - Выполняет подключение (установку) precommit hook'а в репозиторий
configure - Выполняет настройку репозитория
exec-rules - Выполняет указанные сценарии в каталоге репозитория принудительно, без обращения к git
"""
И Код возврата команды "oscript" равен 5
Loading

0 comments on commit 4bbe828

Please sign in to comment.