Skip to content
Closed
66 changes: 65 additions & 1 deletion v8files-extractor.os
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,7 @@
ДополнитьФайлХука(КаталогХуков, УдалятьФайлыИзИндексаГит);

Если НЕ ЭтоWindows() Тогда
CRLF2LF(КаталогХуков,ОбъединитьПути(КаталогХуков, "pre-commit"));
СделатьФайлИсполняемым(КаталогХуков, ОбъединитьПути(КаталогХуков, "pre-commit"));
КонецЕсли;

Expand All @@ -538,6 +539,9 @@
ДополнитьСтрокуПараметров(СтрокаПараметров, КонтекстКонфигуратора.ИмяПользователя, "--ib-user");
ДополнитьСтрокуПараметров(СтрокаПараметров, КонтекстКонфигуратора.Пароль, "--ib-pwd");
КонецЕсли;
Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда
ДополнитьСтрокуПараметров(СтрокаПараметров, ВерсияПлатформы, "--v8version");
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаПараметров) Тогда
СтрокаПоиска = "oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src";
СтрокаЗамены = СтрШаблон("%1%2", СтрокаПоиска, СтрокаПараметров);
Expand All @@ -556,6 +560,33 @@
Возврат СтрНайти(НРег(СИ.ВерсияОС), "windows") > 0;
КонецФункции

Процедура CRLF2LF(РабочийКаталог, ИмяФайла)

Параметры = Новый Массив;
Параметры.Добавить(" $'s/\r$//'");
Параметры.Добавить("-i");
Параметры.Добавить(ИмяФайла);

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

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

Лог.Отладка("Заменяем CRLF на LF для файла %1", ИмяФайла);

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

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

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

Процедура СделатьФайлИсполняемым(РабочийКаталог, ИмяФайла)

Параметры = Новый Массив;
Expand Down Expand Up @@ -1018,11 +1049,44 @@
ИсходныйПуть = Лев(СтрокаПереименованияВрем, ПозицияРазделителя - 1);
ПреобразованныйПуть = Сред(СтрокаПереименованияВрем, ПозицияРазделителя + ДлинаРазделителя);

Переименования.Вставить(ИсходныйПуть, ПреобразованныйПуть);
Если Переименования.Получить(ИсходныйПуть) <> Неопределено Тогда
СуществующийПуть = Переименования.Получить(ИсходныйПуть);
Если ВРег(Лев(СуществующийПуть, 4)) = "UND\" И ВРег(Лев(ПреобразованныйПуть, 4)) <> "UND\" Тогда
Переименования.Вставить(ИсходныйПуть, ПреобразованныйПуть);
КонецЕсли;
Иначе
Переименования.Вставить(ИсходныйПуть, ПреобразованныйПуть);
КонецЕсли;

КонецЦикла;
ЧтениеТекста.Закрыть();

ПутьКФайлуМэпа = ОбъединитьПути(ПутьКИсходникам, "maps.txt");
Если Новый Файл(ПутьКФайлуМэпа).Существует() Тогда
Лог.Отладка("Читаю файл соответствий maps.txt");
ЧтениеМэпа = Новый ЧтениеТекста(ПутьКФайлуМэпа, КодировкаТекста.UTF8);
СтрокаМэпа = ЧтениеМэпа.ПрочитатьСтроку();
Пока СтрокаМэпа <> Неопределено Цикл

СтрокаМэпаВрем = СтрокаМэпа;
СтрокаМэпа = ЧтениеМэпа.ПрочитатьСтроку();

ПозицияРазделителя = СтрНайти(СтрокаМэпаВрем, Разделитель);
Если ПозицияРазделителя = 0 Тогда
Продолжить;
КонецЕсли;

Лог.Отладка(СтрокаМэпаВрем);

ОригинальныйПуть = Сред(СтрокаМэпаВрем, ПозицияРазделителя + ДлинаРазделителя);
ЧитабельныйПуть = Лев(СтрокаМэпаВрем, ПозицияРазделителя - 1);

Переименования.Вставить(ОригинальныйПуть, ЧитабельныйПуть);

КонецЦикла;
ЧтениеМэпа.Закрыть();
КонецЕсли;

Возврат Переименования;

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