1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-16 11:38:11 +02:00
OpenIntegrations/.github/workflows/os/convert.os

221 lines
9.2 KiB
Plaintext
Raw Normal View History

2024-03-14 13:16:33 +02:00
Функция ПолучитьСопоставлениеФайлов()
Сопоставление = Новый Соответствие();
ФайлыМодулей = НайтиФайлы("./src/ru/", "*.bsl", Истина);
Признак = "// OneScript: ";
Для Каждого Файл Из ФайлыМодулей Цикл
ТекущийФайл = Файл.ПолноеИмя;
ТекстФайла = Новый ТекстовыйДокумент();
ТекстФайла.Прочитать(ТекущийФайл, "UTF-8");
Для Н = 1 По ТекстФайла.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(ТекстФайла.ПолучитьСтроку(Н));
Если Не ЗначениеЗаполнено(ТекущаяСтрока) Тогда
Прервать;
КонецЕсли;
Если СтрНайти(ТекущаяСтрока, Признак) > 0 Тогда
ПутьOS = СтрЗаменить(ТекущаяСтрока, Признак, "");
ПутьOS = СокрЛП(ПутьOS);
ПутьOS = СтрЗаменить(ПутьOS, "./", "./src/ru/");
Сопоставление.Вставить(ТекущийФайл, ПутьOS);
КонецЕсли;
КонецЦикла;
КонецЦикла;
2024-05-13 13:10:19 +02:00
ОбновитьLibConfig(Сопоставление);
Возврат Сопоставление;
2024-05-08 12:35:02 +02:00
2024-03-14 13:16:33 +02:00
КонецФункции
Функция ПолучитьСоответствиеЗамен()
СоответствиеЗамен = Новый Соответствие();
СоответствиеЗамен.Вставить("// #Использовать" , "#Использовать");
СоответствиеЗамен.Вставить("//#Использовать" , "#Использовать");
2024-03-30 13:13:06 +02:00
СоответствиеЗамен.Вставить("УстановитьБезопасныйРежим(Истина);" , "");
СоответствиеЗамен.Вставить("УстановитьБезопасныйРежим(Ложь);" , "");
СоответствиеЗамен.Вставить("// !OInt " , "");
2024-03-14 13:16:33 +02:00
Возврат СоответствиеЗамен;
КонецФункции
Процедура ВыполнитьОбработку()
ОбновитьНомерВерсии();
2024-03-14 13:16:33 +02:00
Сообщить("Начало конвертации OPI -> OInt");
Сообщить("------------------------------");
Начало = ТекущаяДата();
СоответствиеМодулей = ПолучитьСопоставлениеФайлов();
Для Каждого ПараМодулей Из СоответствиеМодулей Цикл
Сообщить(Символы.ПС);
2024-03-14 13:21:55 +02:00
ПортироватьФайл(ПараМодулей.Ключ, ПараМодулей.Значение);
2024-03-14 13:16:33 +02:00
КонецЦикла;
Сообщить("------------------------------");
Сообщить("Обработка завершена! Длительность - " + Строка(ТекущаяДата() - Начало));
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции
Процедура ПортироватьФайл(Знач Файл1С, Знач ФайлОС)
ФайлМодуля = Новый Файл(Файл1С);
2024-03-15 08:25:48 +02:00
МодульОС = Новый Файл(ФайлОС);
ИмяМодуля = МодульОС.Имя;
2024-03-14 13:16:33 +02:00
Если ФайлМодуля.Существует() Тогда
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Начало обработки файла");
2024-03-14 13:16:33 +02:00
Иначе
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Файл не существует. Пропускаем");
2024-03-14 13:16:33 +02:00
Возврат;
2024-03-14 13:29:58 +02:00
КонецЕсли;
2024-03-14 13:16:33 +02:00
2024-03-14 13:40:01 +02:00
Модуль = ПрочитатьМодуль(Файл1С, ИмяМодуля);
2024-03-14 13:16:33 +02:00
Если СтрДлина(Модуль) = 0 Тогда
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Модуль пустой. Пропускаем");
2024-03-14 13:16:33 +02:00
Возврат;
КонецЕсли;
2024-03-14 13:40:01 +02:00
ОбработатьЗаменыМодуля(ИмяМодуля, Модуль);
ЗаписатьМодуль(ФайлОС, Модуль, ИмяМодуля);
2024-03-14 13:16:33 +02:00
КонецПроцедуры
2024-03-14 13:40:01 +02:00
Функция ПрочитатьМодуль(Знач ФайлМодуля, Знач ИмяМодуля)
2024-03-14 13:16:33 +02:00
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Начало чтения текста модуля");
2024-03-14 13:16:33 +02:00
ЧтениеТекста = Новый ЧтениеТекста(ФайлМодуля, "UTF-8");
2024-03-14 13:16:33 +02:00
Модуль = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Модуль прочитан. Длина - " + Строка(СтрДлина(Модуль)));
2024-03-14 13:16:33 +02:00
Возврат Модуль;
2024-03-14 13:40:01 +02:00
КонецФункции
2024-03-14 13:16:33 +02:00
2024-03-14 13:40:01 +02:00
Процедура ЗаписатьМодуль(Знач ФайлМодуля, Знач Модуль, Знач ИмяМодуля)
2024-03-14 13:16:33 +02:00
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Начало записи модуля");
2024-03-14 13:16:33 +02:00
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.УстановитьТекст(Модуль);
2024-03-14 13:40:01 +02:00
ТекстовыйДокумент.Записать(ФайлМодуля);
2024-03-14 13:16:33 +02:00
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Модуль записан");
2024-03-14 13:16:33 +02:00
КонецПроцедуры
Процедура ВыводСообщенияПроцесса(Знач ИмяФайла, Знач Действие)
Длина = 30;
2024-03-14 13:40:01 +02:00
Пока СтрДлина(ИмяФайла) < Длина Цикл
2024-03-14 13:16:33 +02:00
ИмяФайла = ИмяФайла + " ";
КонецЦикла;
Сообщить("Конвертация | " + ИмяФайла + " | " + Действие);
КонецПроцедуры
2024-03-14 13:40:01 +02:00
Процедура ОбработатьЗаменыМодуля(Знач ИмяМодуля, Модуль)
2024-03-14 13:16:33 +02:00
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Начало произведения замен");
2024-03-14 13:16:33 +02:00
СоответствиеЗамен = ПолучитьСоответствиеЗамен();
Для Каждого Замена Из СоответствиеЗамен Цикл
2024-03-14 13:40:01 +02:00
Модуль = СтрЗаменить(Модуль, Замена.Ключ, Замена.Значение);
2024-03-14 13:16:33 +02:00
КонецЦикла;
2024-03-14 13:40:01 +02:00
ВыводСообщенияПроцесса(ИмяМодуля, "Окончание произведения замен");
2024-03-14 13:16:33 +02:00
КонецПроцедуры
Процедура ОбновитьНомерВерсии()
ПутьПД = "./src/ru/OInt/packagedef";
ПутьКФ = "./src/ru/OPI/src/Configuration/Configuration.mdo";
Версия = "";
ЧтениеДанныхКонфигурации = Новый ЧтениеXML();
ЧтениеДанныхКонфигурации.ОткрытьФайл(ПутьКФ);
Пока ЧтениеДанныхКонфигурации.Прочитать() Цикл
Если Строка(ЧтениеДанныхКонфигурации.Имя) = "version" Тогда
ЧтениеДанныхКонфигурации.Прочитать();
Версия = Строка(ЧтениеДанныхКонфигурации.Значение);
Прервать;
КонецЕсли;
КонецЦикла;
Признак = ".Версия(""";
Packagedef = Новый ТекстовыйДокумент();
Packagedef.Прочитать(ПутьПД);
Для Н = 1 По Packagedef.КоличествоСтрок() Цикл
ТекущаяСтрока = СокрЛП(Packagedef.ПолучитьСтроку(Н));
Если СтрНайти(ТекущаяСтрока, Признак) Тогда
Packagedef.ЗаменитьСтроку(Н, " .Версия(""" + Версия + """)");
2024-05-12 18:47:39 +02:00
Packagedef.Записать(ПутьПД);
Возврат;
КонецЕсли;
КонецЦикла;
2024-05-13 13:10:19 +02:00
КонецПроцедуры
Процедура ОбновитьLibConfig(Знач СоответствиеКовертации)
Документ = Новый ТекстовыйДокумент();
Документ.ДобавитьСтроку("<package-def>");
Макет = " <module name=""%1"" file=""%2""/>";
Для Каждого Модуль Из СоответствиеКовертации Цикл
ТекущийМодуль = Модуль.Значение;
ФайлМодуля = Новый Файл(ТекущийМодуль);
ПутьМодуля = СтрЗаменить(ТекущийМодуль, "./src/ru/OInt/", "");
2024-05-13 13:25:45 +02:00
Бибилотека = ФайлМодуля.ИмяБезРасширения;
Если Бибилотека = "OPI_Тесты" Тогда
Продолжить;
КонецЕсли;
2024-05-13 13:36:54 +02:00
ТекущаяСтрока = СтрШаблон(Макет, Бибилотека, СокрЛП(ПутьМодуля));
2024-05-13 13:10:19 +02:00
Документ.ДобавитьСтроку(ТекущаяСтрока);
КонецЦикла;
Документ.ДобавитьСтроку("</package-def>");
Документ.Записать("./src/ru/OInt/lib.config");
2024-05-13 13:10:19 +02:00
КонецПроцедуры
2024-03-14 13:16:33 +02:00
#КонецОбласти
2024-03-15 08:25:48 +02:00
ВыполнитьОбработку();