vanessa-opensource / vanessa-runner

утилита автоматизации базовых операций разработчика 1С

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

johnnyshut opened this issue · comments

Предложение добавить команду, чтобы получить имя, вендора, версию конфигурации 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);