Skip to content

Commit 4b251e9

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

File tree

3 files changed

+18
-127
lines changed

3 files changed

+18
-127
lines changed

features/edtExport.feature

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
Когда Я выполняю команду "gitsync"
3333
Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git"
3434
И Вывод команды "gitsync" не содержит "Внешнее исключение"
35-
И Вывод команды "gitsync" содержит "Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии."
35+
И Вывод команды "gitsync" содержит "Версия EDT не передана через параметры, определена автоматически:"
3636
И Код возврата команды "gitsync" равен 0
3737

3838
Сценарий: Cинхронизация с использованием edtExport с явным указанием версии EDT
@@ -44,7 +44,7 @@
4444
Когда Я выполняю команду "gitsync"
4545
Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git"
4646
И Вывод команды "gitsync" не содержит "Внешнее исключение"
47-
И Вывод команды "gitsync" не содержит "Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии."
47+
И Вывод команды "gitsync" не содержит "Версия EDT не передана через параметры, определена автоматически:"
4848
И Код возврата команды "gitsync" равен 0
4949

5050
Сценарий: Cинхронизация хранилища расширения с использованием edtExport без указания базового проекта

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: 15 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,25 @@
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 не передана через параметры, определена автоматически: %1", РезультатПоиска.ВерсияEDT);
219+
ВерсияEDT = РезультатПоиска.ВерсияEDT;
220+
КонецЕсли;
236221

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

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

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

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

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

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

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-
363325
Функция ОбернутьВКавычки(Знач Строка)
364326
Возврат """" + Строка + """";
365327
КонецФункции
@@ -376,78 +338,6 @@
376338

377339
КонецФункции // ЭтоWindows()
378340

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-
451341
Процедура ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки)
452342

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

0 commit comments

Comments
 (0)