vanessa-opensource / vanessa-runner

утилита автоматизации базовых операций разработчика 1С
Mozilla Public License 2.0
206 stars 106 forks source link

Получение свойств конфигурации из исходников #603

Closed johnnyshut closed 10 months ago

johnnyshut commented 10 months ago

Предложение добавить команду, чтобы получить имя, вендора, версию конфигурации etc из "src/cf/Configuration.xml"

Функция ПолучитьСвойстваКонфигурации(КаталогИсходогоКода = "./src/cf") Экспорт

    Свойства = Новый Структура("Name, Vendor, Version");

    ПутьКФайлу = ОбъединитьПути(КаталогИсходогоКода, "Configuration.xml");
    Если ФС.ФайлСуществует(ПутьКФайлу) Тогда
        Текст = ПрочитатьФайлВТексте(ПутьКФайлу);

        Значение = РазобратьСПомощьюРВ(Текст, "(?<=<Name>).*?(?=</Name>)");
        Свойства.Name = Значение;

        Значение = РазобратьСПомощьюРВ(Текст, "(?<=<Vendor>).*?(?=</Vendor>)");
        Свойства.Vendor = Значение;

        Значение = РазобратьСПомощьюРВ(Текст, "(?<=<Version>).*?(?=</Version>)");
        Свойства.Version = Значение;

    КонецЕсли;

    Возврат Свойства;

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

Функция ПрочитатьФайлВТексте(ИмяФайла)

    Файл = Новый Файл(ИмяФайла);
    Если Файл.Существует() Тогда
        ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
        Текст = ЧтениеТекста.Прочитать();
        ЧтениеТекста.Закрыть();
        Возврат Текст;
    Иначе
        Возврат "";
    КонецЕсли;

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

Функция РазобратьСПомощьюРВ(Текст, ТекстРВ)

    РегулярноеВыражение = Новый РегулярноеВыражение(ТекстРВ);
    РегулярноеВыражение.Многострочный = Истина;
    Совпадения = РегулярноеВыражение.НайтиСовпадения(Текст);
    Если Совпадения.Количество() > 0 Тогда
        Возврат Совпадения[0].Значение;
    Иначе
        Возврат "";
    КонецЕсли;

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

СвойстваКонфигурации = ПолучитьСвойстваКонфигурации();
Сообщить(СвойстваКонфигурации.Version);