diff --git a/v8files-extractor.os b/v8files-extractor.os index e0fddd9..e8c8e1b 100644 --- a/v8files-extractor.os +++ b/v8files-extractor.os @@ -518,6 +518,7 @@ ДополнитьФайлХука(КаталогХуков, УдалятьФайлыИзИндексаГит); Если НЕ ЭтоWindows() Тогда + CRLF2LF(КаталогХуков,ОбъединитьПути(КаталогХуков, "pre-commit")); СделатьФайлИсполняемым(КаталогХуков, ОбъединитьПути(КаталогХуков, "pre-commit")); КонецЕсли; @@ -538,6 +539,9 @@ ДополнитьСтрокуПараметров(СтрокаПараметров, КонтекстКонфигуратора.ИмяПользователя, "--ib-user"); ДополнитьСтрокуПараметров(СтрокаПараметров, КонтекстКонфигуратора.Пароль, "--ib-pwd"); КонецЕсли; + Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда + ДополнитьСтрокуПараметров(СтрокаПараметров, ВерсияПлатформы, "--v8version"); + КонецЕсли; Если ЗначениеЗаполнено(СтрокаПараметров) Тогда СтрокаПоиска = "oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src"; СтрокаЗамены = СтрШаблон("%1%2", СтрокаПоиска, СтрокаПараметров); @@ -556,6 +560,33 @@ Возврат СтрНайти(НРег(СИ.ВерсияОС), "windows") > 0; КонецФункции +Процедура CRLF2LF(РабочийКаталог, ИмяФайла) + + Параметры = Новый Массив; + Параметры.Добавить(" $'s/\r$//'"); + Параметры.Добавить("-i"); + Параметры.Добавить(ИмяФайла); + + Команда = Новый Команда; + + Команда.УстановитьКоманду("sed"); + Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8); + Команда.УстановитьРабочийКаталог(РабочийКаталог); + Команда.ДобавитьПараметры(Параметры); + + Лог.Отладка("Заменяем CRLF на LF для файла %1", ИмяФайла); + + КодВозврата = Команда.Исполнить(); + + Если КодВозврата <> 0 Тогда + Лог.Ошибка("Получен ненулевой код возврата " + КодВозврата + ". Выполнение скрипта остановлено!"); + ВызватьИсключение СокрЛП(Команда.ПолучитьВывод()); + Иначе + Лог.Отладка("Код возврата равен 0"); + КонецЕсли; + +КонецПроцедуры + Процедура СделатьФайлИсполняемым(РабочийКаталог, ИмяФайла) Параметры = Новый Массив; @@ -1018,11 +1049,44 @@ ИсходныйПуть = Лев(СтрокаПереименованияВрем, ПозицияРазделителя - 1); ПреобразованныйПуть = Сред(СтрокаПереименованияВрем, ПозицияРазделителя + ДлинаРазделителя); - Переименования.Вставить(ИсходныйПуть, ПреобразованныйПуть); + Если Переименования.Получить(ИсходныйПуть) <> Неопределено Тогда + СуществующийПуть = Переименования.Получить(ИсходныйПуть); + Если ВРег(Лев(СуществующийПуть, 4)) = "UND\" И ВРег(Лев(ПреобразованныйПуть, 4)) <> "UND\" Тогда + Переименования.Вставить(ИсходныйПуть, ПреобразованныйПуть); + КонецЕсли; + Иначе + Переименования.Вставить(ИсходныйПуть, ПреобразованныйПуть); + КонецЕсли; КонецЦикла; ЧтениеТекста.Закрыть(); + ПутьКФайлуМэпа = ОбъединитьПути(ПутьКИсходникам, "maps.txt"); + Если Новый Файл(ПутьКФайлуМэпа).Существует() Тогда + Лог.Отладка("Читаю файл соответствий maps.txt"); + ЧтениеМэпа = Новый ЧтениеТекста(ПутьКФайлуМэпа, КодировкаТекста.UTF8); + СтрокаМэпа = ЧтениеМэпа.ПрочитатьСтроку(); + Пока СтрокаМэпа <> Неопределено Цикл + + СтрокаМэпаВрем = СтрокаМэпа; + СтрокаМэпа = ЧтениеМэпа.ПрочитатьСтроку(); + + ПозицияРазделителя = СтрНайти(СтрокаМэпаВрем, Разделитель); + Если ПозицияРазделителя = 0 Тогда + Продолжить; + КонецЕсли; + + Лог.Отладка(СтрокаМэпаВрем); + + ОригинальныйПуть = Сред(СтрокаМэпаВрем, ПозицияРазделителя + ДлинаРазделителя); + ЧитабельныйПуть = Лев(СтрокаМэпаВрем, ПозицияРазделителя - 1); + + Переименования.Вставить(ОригинальныйПуть, ЧитабельныйПуть); + + КонецЦикла; + ЧтениеМэпа.Закрыть(); + КонецЕсли; + Возврат Переименования; КонецФункции