Skip to content

Commit 582dccb

Browse files
author
Яркевич Сергей
committed
feat: use edtfind to locate EDT executables for edtExport
1 parent 61e9abe commit 582dccb

2 files changed

Lines changed: 15 additions & 125 deletions

File tree

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
.ВключитьФайл("docs")
4545
.ВключитьФайл("oscript_modules")
4646
.ЗависитОт("strings", "0.4.1")
47+
.ЗависитОт("edtfind")
4748
.РазработкаЗависитОт("1testrunner", "1.9.2")
4849
.РазработкаЗависитОт("1bdd", "1.15.1")
4950
.РазработкаЗависитОт("notify", "0.2.0")

src/Классы/edtExport.os

Lines changed: 14 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#Использовать logos
22
#Использовать tempfiles
33
#Использовать fs
4-
#Использовать semver
4+
#Использовать edtfind
55

66
Перем Лог;
77
Перем Обработчик;
@@ -15,6 +15,7 @@
1515

1616
Перем ИмяФайлаДампаКонфигурации;
1717
Перем ИмяФайлаИзменений;
18+
Перем Использовать1cedtcli;
1819

1920
#Область Интерфейс_плагина
2021

@@ -210,38 +211,24 @@
210211

211212
ИсполняемыйФайл = "";
212213

213-
КаталогEDT = УточнитьВерсиюEDT();
214-
215-
Если Лев(ВерсияEDT, 4) >= "2024" Тогда // BSLLS:MagicNumber-off
216-
ИсполняемыйФайл = НайтиEdtcli(КаталогEDT);
217-
Иначе
218-
ИсполняемыйФайл = НайтиRing();
219-
КонецЕсли;
220-
221-
Возврат ИсполняемыйФайл;
222-
223-
КонецФункции
224-
225-
Функция УточнитьВерсиюEDT()
226-
227-
ВсеВерсииEDT = НайтиВсеУстановленныеEDT();
214+
ОбъектПоиска = Новый ПоискEDT();
215+
РезультатПоиска = ОбъектПоиска.НайтиИнформациюОEDT(ВерсияEDT);
228216

229217
Если Не ЗначениеЗаполнено(ВерсияEDT) Тогда
230-
231-
Лог.Информация("Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии.");
232-
233-
ВерсияEDT = ВсеВерсииEDT.Версии[0];
234-
КаталогEDT = ВсеВерсииEDT.КаталогиEDT.Получить(ВсеВерсииEDT.Версии[0]);
235-
Лог.Информация("Версия EDT определена автоматически: %1, каталог %2", ВерсияEDT, КаталогEDT);
218+
ВерсияEDT = РезультатПоиска.ВерсияEDT;
219+
КонецЕсли;
236220

237-
Возврат КаталогEDT;
221+
Лог.Информация("Версия EDT: %1, каталог %2", РезультатПоиска.ВерсияEDT, РезультатПоиска.КаталогEDT);
238222

223+
Использовать1cedtcli = ЗначениеЗаполнено(РезультатПоиска.ПутьКcli);
224+
Если Использовать1cedtcli Тогда
225+
ИсполняемыйФайл = РезультатПоиска.ПутьКcli;
239226
Иначе
240-
241-
Возврат ВсеВерсииEDT.КаталогиEDT.Получить(ВерсияEDT);
242-
227+
ИсполняемыйФайл = НайтиRing();
243228
КонецЕсли;
244229

230+
Возврат ИсполняемыйФайл;
231+
245232
КонецФункции
246233

247234
// Функция - получает команду запуска утилиты ring или 1cedtcli для выполнения конвертации
@@ -254,7 +241,7 @@
254241
Команда = Новый Команда;
255242
Команда.УстановитьКоманду(ОпределитьИсполняемыйФайл());
256243

257-
Если Лев(ВерсияEDT, 4) >= "2024" Тогда // BSLLS:MagicNumber-off
244+
Если Использовать1cedtcli Тогда
258245
КомандаEdtcli(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта);
259246
Иначе
260247
КомандаRing(Команда, КаталогВыгрузки, РабочееПространство, КаталогПроекта);
@@ -334,32 +321,6 @@
334321

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

337-
// Функция - выполняет поиск утилиты 1cedtcli и возвращает полный путь к утилите
338-
//
339-
// Возвращаемое значение:
340-
// Строка - полный путь к утилите 1cedtcli
341-
//
342-
Функция НайтиEdtcli(КаталогEDT) Экспорт
343-
344-
Расширение = "";
345-
Если ЭтоWindows() Тогда
346-
Расширение = ".exe";
347-
КонецЕсли;
348-
349-
ИсполняемыйФайл = СтрШаблон("1cedtcli%1", Расширение);
350-
Лог.Информация("Ищу %1 в %2", ИсполняемыйФайл, КаталогEDT);
351-
НайденныеФайлы = НайтиФайлы(КаталогEDT, ИсполняемыйФайл, Истина);
352-
353-
Если НайденныеФайлы.Количество() = 0 Тогда
354-
ВызватьИсключение "1cedtcli не найден";
355-
КонецЕсли;
356-
357-
Результат = НайденныеФайлы[0].ПолноеИмя;
358-
Лог.Информация("Найден исполняемый файл %1", Результат);
359-
Возврат Результат;
360-
361-
КонецФункции
362-
363324
Функция ОбернутьВКавычки(Знач Строка)
364325
Возврат """" + Строка + """";
365326
КонецФункции
@@ -376,78 +337,6 @@
376337

377338
КонецФункции // ЭтоWindows()
378339

379-
// Функция - выполняет поиск всех установленных версий EDT
380-
//
381-
// Возвращаемое значение:
382-
// Структура - отсортированные версии и пути к исполняемым файлам
383-
//
384-
Функция НайтиВсеУстановленныеEDT()
385-
386-
КаталогиEDT = Новый Соответствие;
387-
ВерсииДляСортировки = Новый Массив;
388-
389-
КаталогиПоиска = КаталогиУстановкиЕДТПоУмолчанию();
390-
391-
РВ = Новый РегулярноеВыражение("1c[-|_]edt[-| ](\d+\.\d+(?:\.\d)*)");
392-
РВ.ИгнорироватьРегистр = Истина;
393-
394-
Для Каждого КаталогПоиска Из КаталогиПоиска Цикл
395-
396-
Лог.Информация("Ищу версии EDT в каталоге ""%1""", КаталогПоиска);
397-
398-
ФайлыIni = НайтиФайлы(КаталогПоиска, "1cedt.ini", Истина);
399-
Файлы = НайтиФайлы(КаталогПоиска, "1cedt", Истина);
400-
401-
Для Каждого Файл Из ФайлыIni Цикл
402-
Файлы.Добавить(Файл);
403-
КонецЦикла;
404-
405-
Для Каждого ТекФайл Из Файлы Цикл
406-
407-
Лог.Информация("Ищу совпадения регулярного выражения с именем файла ""%1""", ТекФайл.Путь);
408-
КаталогВерсии = Новый Файл(ТекФайл.Путь);
409-
Совпадения = РВ.НайтиСовпадения(КаталогВерсии.Имя);
410-
411-
Если Совпадения.Количество() = 0 Тогда
412-
Продолжить;
413-
КонецЕсли;
414-
415-
НайденнаяВерсия = Совпадения[0].Группы[1].Значение;
416-
417-
КаталогиEDT.Вставить(НайденнаяВерсия, ТекФайл.Путь);
418-
ВерсииДляСортировки.Добавить(НайденнаяВерсия);
419-
420-
Лог.Информация("Найдена версия EDT ""%1"" в каталоге ""%2"".", НайденнаяВерсия, ТекФайл.Путь);
421-
КонецЦикла;
422-
КонецЦикла;
423-
424-
Версии.СортироватьВерсии(ВерсииДляСортировки, "УБЫВ");
425-
426-
Если ВерсииДляСортировки.Количество() = 0 Тогда
427-
ВызватьИсключение "Не найдено ни одной установленной версии EDT";
428-
КонецЕсли;
429-
430-
Возврат Новый Структура("Версии, КаталогиEDT", ВерсииДляСортировки, КаталогиEDT);
431-
432-
КонецФункции
433-
434-
// скопировано из yard, код Abramov Dmitry
435-
Функция КаталогиУстановкиЕДТПоУмолчанию()
436-
437-
СистемнаяИнформация = Новый СистемнаяИнформация();
438-
Массив = Новый Массив();
439-
Если ЭтоWindows() Тогда
440-
Массив.Добавить(ОбъединитьПути(СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), "1C\1cedtstart\installations"));
441-
Массив.Добавить("C:\Program Files\1C\1CE\components");
442-
Иначе
443-
Массив.Добавить("~/.local/share/1C/1cedtstart/installations");
444-
Массив.Добавить("/opt/1C/1CE/components");
445-
КонецЕсли;
446-
447-
Возврат Массив;
448-
449-
КонецФункции
450-
451340
Процедура ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки)
452341

453342
ПутьКФайлуДополнительнойВыгрузки = ВременныеФайлы.НовоеИмяФайла();

0 commit comments

Comments
 (0)