mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2024-11-24 08:32:25 +02:00
Merge branch 'release/1.0.5'
This commit is contained in:
commit
1325ac1c5b
@ -6,7 +6,7 @@
|
||||
|
||||
Указанным продуктом пользовались долгое время, он очень хорош, но потребность в развитии и невозможность реализации некоторых сценариев работы в публичной версии сподвигли к реализации нового решения.
|
||||
|
||||
Особенности данного решения:
|
||||
### Особенности данного решения:
|
||||
|
||||
- Возможность расширения функциональности под свои нужды без потери совместимости с публичной версией
|
||||
- Централизованная установка и обновление скриптов без необходимости утяжелять репозиторий проекта
|
||||
@ -35,6 +35,8 @@
|
||||
- `РазборОтчетОбработокРасширений` - при выполнении данного сценария, файлы внешних отчетов, обработок и расширений средствами платформы будут разложены на исходные файлы и помещены в каталог исходных файлов репозитория в подкаталоги, соответствующие расширениям. Например внешний отчет `ВнешнийОтчет1.erf` будет разложен в каталог `src\erf\ВнешнийОтчет1`
|
||||
- `РазборОбычныхФормНаИсходники` - при выполнении данного сценария, файлы обычных форм (`Form.bin`) раскладываются на исходные файлы с помощью инструмента `v8unpack`
|
||||
- `КорректировкаXMLФорм` - при выполнении данного сценария, файлы описаний форм (`Form.xml`) проверяются на наличие задублируровашихся ндексов элементов, которые образуются при объединениях. Если дубли есть, то они исправляются
|
||||
- `ДобавлениеПробеловПередКлючевымиСловами` - при выполнении данного сценария, в файлах модулей перед ключевыми словами добавляются отсутсвующие пробелы. На данный момент обрабатывается только ключевое слово `Экспорт`.
|
||||
- `УдалениеЛишнихКонцевыхПробелов` - при выполнении данного сценария, в файлах модулей удаляются лишние пробелы и табы в конце строки после `;`.
|
||||
|
||||
## Изменение настроек
|
||||
|
||||
@ -46,6 +48,8 @@ precommit4onec может читать настройки своей работ
|
||||
- Сброс настроек на заводские - `precommit4onec configure -global -reset`
|
||||
- Интерактивное изменение настроек - `precommit4onec configure -global -config`.
|
||||
|
||||
Предоставляется возможность в репозитории иметь свои, отличные от глобальных, настройки. Для этого необходимо вместо флага `-global` в указанных выше командах передавать параметр `-rep-path` с указанием пути к каталогу репозитория.
|
||||
|
||||
Конфигурирование дает возможности:
|
||||
|
||||
- Изменить список сценариев обработки файлов
|
||||
|
@ -10,7 +10,7 @@
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.4"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.5"
|
||||
И Вывод команды "oscript" содержит "Установленные настройки:"
|
||||
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
|
||||
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
|
||||
@ -24,7 +24,7 @@
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.0.4
|
||||
precommit4onec v1.0.5
|
||||
Установленные настройки:
|
||||
ИспользоватьСценарииРепозитория = Нет
|
||||
КаталогЛокальныхСценариев =
|
||||
|
@ -14,7 +14,7 @@
|
||||
Сценарий: Получение версии продукта
|
||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os version"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "1.0.4"
|
||||
И Вывод команды "oscript" содержит "1.0.5"
|
||||
И Вывод команды "oscript" не содержит "precommit4onec v"
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os help"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.0.4
|
||||
precommit4onec v1.0.5
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
@ -36,7 +36,7 @@
|
||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.0.4
|
||||
precommit4onec v1.0.5
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
|
@ -18,7 +18,7 @@
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.4"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.5"
|
||||
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
|
||||
@ -26,13 +26,13 @@
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.4"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.5"
|
||||
И Вывод команды "oscript" содержит "не является репозиторием git"
|
||||
|
||||
Сценарий: Установка precommit4onec во вложенные каталоги
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.4"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.5"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
// Добавление параметров команды
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-global", "Работа с глобальными настройками.");
|
||||
// TODO: пока оция не используется Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-rep-path", "Каталог репозитория, настройки которого интересуют.");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-rep-path", "Каталог репозитория, настройки которого интересуют.");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-reset", "Сброс настроек на значения по умолчанию. Если редактируются настройки репозитория, то происходит удаление файла настроек.");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-config", "Интерактивное конфигурирование настроек.");
|
||||
|
||||
@ -30,11 +30,10 @@
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
Если НЕ ПараметрыКоманды["-global"] Тогда
|
||||
// TODO: Пока не используется И НЕ ЗначениеЗаполнено(ПараметрыКоманды["-rep-path"]) Тогда
|
||||
Если НЕ ПараметрыКоманды["-global"]
|
||||
И НЕ ЗначениеЗаполнено(ПараметрыКоманды["-rep-path"]) Тогда
|
||||
|
||||
// TODO: пока не используется Лог.Ошибка("Для конфгурирования необходимо передать флаг -global или указать каталог репозитория параметром -rep-path");
|
||||
Лог.Ошибка("Для конфгурирования необходимо передать флаг -global");
|
||||
Лог.Ошибка("Для конфгурирования необходимо передать флаг -global или указать каталог репозитория параметром -rep-path");
|
||||
Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
КонецЕсли;
|
||||
@ -163,37 +162,48 @@
|
||||
|
||||
Процедура ИнтерактивнаяНастройка(КаталогРепозитория, УправлениеНастройками, ГлобальныеНастройки, КаталогГлобальныхСценариев)
|
||||
|
||||
ИмяПриложения = "Precommt4onecСценарии";
|
||||
Сообщить("Настройка конфигурации precommit");
|
||||
ГлобальныеСценарии = ПолучитьНастройкуМассив("Выберите подключаемые глобальные сценарии: ",
|
||||
ПолучитьИменаСценариев(КаталогГлобальныхСценариев),
|
||||
УправлениеНастройками.Настройка(ИмяПриложения + "\ГлобальныеСценарии"));
|
||||
Если ГлобальныеНастройки Тогда
|
||||
|
||||
ГлобальныеСценарии = ПолучитьНастройкуМассив("Выберите подключаемые глобальные сценарии: ", ПолучитьИменаСценариев(КаталогГлобальныхСценариев));
|
||||
ИспользоватьСценарииРепозитория = ПолучитьНастройкуБулево("Нужно использовать сценарии локальных репозиториев?", ЛОЖЬ);
|
||||
|
||||
КаталогЛокальныхСценариев = "";
|
||||
Если ИспользоватьСценарииРепозитория Тогда
|
||||
|
||||
КаталогЛокальныхСценариев = ПолучитьНастройкуСтрока("Укажите относительный путь к сценариям в репозитории: ");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПриложения = "Precommt4onecСценарии";
|
||||
СброситьНастройкиРепозитория(УправлениеНастройками);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ИспользоватьСценарииРепозитория", ИспользоватьСценарииРепозитория);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\КаталогЛокальныхСценариев", КаталогЛокальныхСценариев);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ГлобальныеСценарии", ГлобальныеСценарии);
|
||||
Подсказка = "Нужно использовать сценарии локальных репозиториев?";
|
||||
|
||||
Иначе
|
||||
|
||||
Подсказка = "Нужно использовать локальные сценарии?";
|
||||
|
||||
// todo
|
||||
// пока нет, будет в будущем
|
||||
КонецЕсли;
|
||||
|
||||
ИспользоватьСценарииРепозитория = ПолучитьНастройкуБулево(Подсказка,
|
||||
УправлениеНастройками.Настройка(ИмяПриложения + "\ИспользоватьСценарииРепозитория"));
|
||||
|
||||
КаталогЛокальныхСценариев = "";
|
||||
Если ИспользоватьСценарииРепозитория Тогда
|
||||
|
||||
КаталогЛокальныхСценариев = ПолучитьНастройкуСтрока("Укажите относительный путь к сценариям в репозитории: ",
|
||||
УправлениеНастройками.Настройка(ИмяПриложения + "\КаталогЛокальныхСценариев"));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СброситьНастройкиРепозитория(УправлениеНастройками);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ИспользоватьСценарииРепозитория", ИспользоватьСценарииРепозитория);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\КаталогЛокальныхСценариев", КаталогЛокальныхСценариев);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ГлобальныеСценарии", ГлобальныеСценарии);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьНастройкуБулево(ТекстПодсказки, ЗначениеПоУмолчанию)
|
||||
Функция ПолучитьНастройкуБулево(ТекстПодсказки, Знач ЗначениеПоУмолчанию)
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ЗначениеПоУмолчанию) Тогда
|
||||
|
||||
ЗначениеПоУмолчанию = Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ВыбранноеЗначение = Формат(ЗначениеПоУмолчанию, "БЛ=n; БИ=y");
|
||||
Пока ИСТИНА Цикл
|
||||
@ -224,7 +234,13 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьНастройкуМассив(ТекстПодсказки, ДоступныйМассив)
|
||||
Функция ПолучитьНастройкуМассив(ТекстПодсказки, ДоступныйМассив, Знач УстановленныеЗначения = Неопределено)
|
||||
|
||||
Если УстановленныеЗначения = Неопределено Тогда
|
||||
|
||||
УстановленныеЗначения = ДоступныйМассив;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Сообщить(ТекстПодсказки);
|
||||
ВыбранныеЭлементы = Новый Массив;
|
||||
@ -232,7 +248,7 @@
|
||||
|
||||
ЗначениеМассива = ДоступныйМассив[Ит];
|
||||
ТекстПодсказкиМассив = Символы.Таб + ЗначениеМассива;
|
||||
Если ПолучитьНастройкуБулево(ТекстПодсказкиМассив, ИСТИНА) Тогда
|
||||
Если ПолучитьНастройкуБулево(ТекстПодсказкиМассив, УстановленныеЗначения.Найти(ЗначениеМассива) <> Неопределено) Тогда
|
||||
|
||||
ВыбранныеЭлементы.Добавить(ЗначениеМассива);
|
||||
|
||||
@ -244,19 +260,24 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьНастройкуСтрока(ТекстПодсказки)
|
||||
Функция ПолучитьНастройкуСтрока(ТекстПодсказки, ЗначениеПоУмолчанию = "")
|
||||
|
||||
ВыбранноеЗначение = "";
|
||||
Пока Истина Цикл
|
||||
|
||||
Сообщить(ТекстПодсказки);
|
||||
Сообщить(ТекстПодсказки + ?(ПустаяСтрока(ЗначениеПоУмолчанию), "", "[" + ЗначениеПоУмолчанию + "]"));
|
||||
ВвестиСтроку(ВыбранноеЗначение);
|
||||
|
||||
ВыбранноеЗначение = СокрЛП(ВыбранноеЗначение);
|
||||
Если Не ПустаяСтрока(ВыбранноеЗначение) Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
|
||||
ИначеЕсли НЕ ПустаяСтрока(ЗначениеПоУмолчанию) Тогда
|
||||
|
||||
ВыбранноеЗначение = ЗначениеПоУмолчанию;
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
@ -41,7 +41,18 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УправлениеНастройками = Новый НастройкиРепозитория(Приложение.ПутьКРодительскомуКаталогу());
|
||||
УправлениеНастройками = Новый НастройкиРепозитория(КаталогРепозитория);
|
||||
Если УправлениеНастройками.ЭтоНовый() ИЛИ УправлениеНастройками.НастройкиПриложения("Precommt4onecСценарии").Количество() = 0 Тогда
|
||||
|
||||
Лог.Информация("Используем глобальные настройки");
|
||||
УправлениеНастройками = Новый НастройкиРепозитория(Приложение.ПутьКРодительскомуКаталогу());
|
||||
|
||||
Иначе
|
||||
|
||||
Лог.Информация("Используем локальные настройки");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ЗагрузитьСценарииОбработки(Приложение.КаталогСценариев(), УправлениеНастройками, КаталогРепозитория);
|
||||
|
||||
КаталогИсходныхФайлов = ПараметрыКоманды["-source-dir"];
|
||||
|
@ -214,7 +214,7 @@
|
||||
|
||||
ПарсерJSON = Новый ПарсерJSON;
|
||||
ТекстКонфигурации = ПарсерJSON.ЗаписатьJSON(Конфигурация);
|
||||
Запись = Новый ЗаписьТекста(АдресКонфигурационногоФайла);
|
||||
Запись = Новый ЗаписьТекста(АдресКонфигурационногоФайла, КодировкаТекста.UTF8NoBOM);
|
||||
Запись.Записать(ТекстКонфигурации);
|
||||
Запись.Закрыть();
|
||||
|
||||
@ -250,7 +250,7 @@
|
||||
Файл = Новый Файл(АдресКонфигурационногоФайла);
|
||||
Если Файл.Существует() Тогда
|
||||
|
||||
Чтение = Новый ЧтениеТекста(АдресКонфигурационногоФайла);
|
||||
Чтение = Новый ЧтениеТекста(АдресКонфигурационногоФайла, КодировкаТекста.UTF8NoBOM);
|
||||
ТекстКонфигурации = Чтение.Прочитать();
|
||||
Чтение.Закрыть();
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
//
|
||||
Функция ВерсияПродукта() Экспорт
|
||||
|
||||
Возврат "1.0.4";
|
||||
Возврат "1.0.5";
|
||||
|
||||
КонецФункции // ВерсияПродукта
|
||||
|
||||
|
@ -0,0 +1,94 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией сценариев обработки файлов
|
||||
// <ДобавлениеПробеловПередКлючевымиСловами>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ИмяСценария
|
||||
// Возвращает имя сценария обработки файлов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя текущего сценария обработки файлов
|
||||
//
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "ДобавлениеПробеловПередКлючевымиСловами";
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
// Параметры:
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
Если АнализируемыйФайл.Существует() И ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
Если ВставитьНужныеПробелы(АнализируемыйФайл.ПолноеИмя) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЛОЖЬ;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция ЭтоФайлИсходников(Файл)
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВставитьНужныеПробелы(Знач ИмяФайла)
|
||||
|
||||
Текст = Новый ЧтениеТекста();
|
||||
Текст.Открыть(ИмяФайла, "utf-8");
|
||||
СодержимоеФайла = Текст.Прочитать();
|
||||
Текст.Закрыть();
|
||||
|
||||
Регексп = Новый РегулярноеВыражение("(^[^\n\/]*\))(Экспорт)([\s]*?)([\/\/]+[^\n]*?)*?$");
|
||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||
Регексп.Многострочный = ИСТИНА;
|
||||
ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
Если ГруппыИндексов.Количество() = 0 Тогда
|
||||
|
||||
Возврат ЛОЖЬ;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1 $2$3$4");
|
||||
|
||||
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,,, Символы.ПС);
|
||||
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||
ЗаписьТекста.Закрыть();
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
@ -48,7 +48,7 @@
|
||||
Если Не ПустаяСтрока(КаталогаВыгрузки) Тогда
|
||||
|
||||
ЧтениеФайла = Новый ЧтениеФайла8(АнализируемыйФайл.ПолноеИмя);
|
||||
ЧтениеФайла.ExtractAll(КаталогаВыгрузки, Истина);
|
||||
ЧтениеФайла.ИзвлечьВсе(КаталогаВыгрузки, Истина);
|
||||
ЧтениеФайла = Неопределено;
|
||||
|
||||
ФайлыМодулей = НайтиФайлы(КаталогаВыгрузки, "module", ИСТИНА);
|
||||
|
93
src/СценарииОбработки/УдалениеЛишнихКонцевыхПробелов.os
Normal file
93
src/СценарииОбработки/УдалениеЛишнихКонцевыхПробелов.os
Normal file
@ -0,0 +1,93 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией сценариев обработки файлов <УдалениеЛишнихКонцевыхПробелов>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ИмяСценария
|
||||
// Возвращает имя сценария обработки файлов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя текущего сценария обработки файлов
|
||||
//
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "УдалениеЛишнихКонцевыхПробелов";
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
// Параметры:
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
Если АнализируемыйФайл.Существует() И ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
Если ИсправитьКонцевыеПробелы(АнализируемыйФайл.ПолноеИмя) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЛОЖЬ;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция ЭтоФайлИсходников(Файл)
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИсправитьКонцевыеПробелы(Знач ИмяФайла)
|
||||
|
||||
Текст = Новый ЧтениеТекста();
|
||||
Текст.Открыть(ИмяФайла, "utf-8");
|
||||
СодержимоеФайла = Текст.Прочитать();
|
||||
Текст.Закрыть();
|
||||
|
||||
Регексп = Новый РегулярноеВыражение("^([^\n\/]*;)([\t ]+?)$");
|
||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||
Регексп.Многострочный = ИСТИНА;
|
||||
ГруппыИндексов = Регексп.НайтиСовпадения(СодержимоеФайла);
|
||||
Если ГруппыИндексов.Количество() = 0 Тогда
|
||||
|
||||
Возврат ЛОЖЬ;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
СодержимоеФайла = Регексп.Заменить(СодержимоеФайла, "$1");
|
||||
|
||||
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,,, Символы.ПС);
|
||||
ЗаписьТекста.Записать(СодержимоеФайла);
|
||||
ЗаписьТекста.Закрыть();
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
@ -1,11 +1,13 @@
|
||||
{
|
||||
{
|
||||
"Precommt4onecСценарии": {
|
||||
"ИспользоватьСценарииРепозитория": false,
|
||||
"КаталогЛокальныхСценариев": "",
|
||||
"ГлобальныеСценарии": [
|
||||
"ДобавлениеПробеловПередКлючевымиСловами.os",
|
||||
"КорректировкаXMLФорм.os",
|
||||
"РазборОбычныхФормНаИсходники.os",
|
||||
"РазборОтчетовОбработокРасширений.os"
|
||||
"РазборОтчетовОбработокРасширений.os",
|
||||
"УдалениеЛишнихКонцевыхПробелов.os"
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user