Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions features/edtExport.feature
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
Когда Я выполняю команду "gitsync"
Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git"
И Вывод команды "gitsync" не содержит "Внешнее исключение"
И Вывод команды "gitsync" содержит "Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии."
И Вывод команды "gitsync" содержит "Версия EDT не передана через параметры, определена автоматически:"
И Код возврата команды "gitsync" равен 0

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

Сценарий: Cинхронизация хранилища расширения с использованием edtExport без указания базового проекта
Expand Down
1 change: 1 addition & 0 deletions features/step_definitions/shared.os
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
// BSLLS:MissingReturnedValueDescription-off

// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
#Использовать 1commands
#Использовать gitrunner
#Использовать asserts
#Использовать tempfiles
Expand Down
1 change: 1 addition & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
.ВключитьФайл("oscript_modules")
.ЗависитОт("strings", "0.4.1")
.ЗависитОт("1commands", "1.5.0")
.ЗависитОт("edtfind", "2.0.2")
.РазработкаЗависитОт("1testrunner", "1.9.2")
.РазработкаЗависитОт("1bdd", "1.15.1")
.РазработкаЗависитОт("notify", "0.2.0")
Expand Down
142 changes: 16 additions & 126 deletions src/Классы/edtExport.os
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#Использовать logos
#Использовать tempfiles
#Использовать fs
#Использовать semver
#Использовать edtfind

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

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

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

Expand All @@ -24,7 +25,7 @@
// Строка - текущая версия плагина
//
Функция Версия() Экспорт
Возврат "2.0.0";
Возврат "2.0.1";
КонецФункции

// Возвращает приоритет выполнения плагина
Expand Down Expand Up @@ -210,38 +211,25 @@

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

КаталогEDT = УточнитьВерсиюEDT();

Если Лев(ВерсияEDT, 4) >= "2024" Тогда // BSLLS:MagicNumber-off
ИсполняемыйФайл = НайтиEdtcli(КаталогEDT);
Иначе
ИсполняемыйФайл = НайтиRing();
КонецЕсли;

Возврат ИсполняемыйФайл;

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

Функция УточнитьВерсиюEDT()

ВсеВерсииEDT = НайтиВсеУстановленныеEDT();
ОбъектПоиска = Новый ПоискEDT();
РезультатПоиска = ОбъектПоиска.НайтиИнформациюОEDT(ВерсияEDT);

Если Не ЗначениеЗаполнено(ВерсияEDT) Тогда

Лог.Информация("Версия EDT не передана через параметры, выполняется поиск максимальной установленной версии.");

ВерсияEDT = ВсеВерсииEDT.Версии[0];
КаталогEDT = ВсеВерсииEDT.КаталогиEDT.Получить(ВсеВерсииEDT.Версии[0]);
Лог.Информация("Версия EDT определена автоматически: %1, каталог %2", ВерсияEDT, КаталогEDT);
Лог.Информация("Версия EDT не передана через параметры, определена автоматически: %1", РезультатПоиска.ВерсияEDT);
ВерсияEDT = РезультатПоиска.ВерсияEDT;
КонецЕсли;

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

Использовать1cedtcli = ЗначениеЗаполнено(РезультатПоиска.ПутьКcli);
Если Использовать1cedtcli Тогда
ИсполняемыйФайл = РезультатПоиска.ПутьКcli;
Иначе

Возврат ВсеВерсииEDT.КаталогиEDT.Получить(ВерсияEDT);

ИсполняемыйФайл = НайтиRing();
КонецЕсли;

Возврат ИсполняемыйФайл;

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

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

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

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

// Функция - выполняет поиск утилиты 1cedtcli и возвращает полный путь к утилите
//
// Возвращаемое значение:
// Строка - полный путь к утилите 1cedtcli
//
Функция НайтиEdtcli(КаталогEDT) Экспорт

Расширение = "";
Если ЭтоWindows() Тогда
Расширение = ".exe";
КонецЕсли;

ИсполняемыйФайл = СтрШаблон("1cedtcli%1", Расширение);
Лог.Информация("Ищу %1 в %2", ИсполняемыйФайл, КаталогEDT);
НайденныеФайлы = НайтиФайлы(КаталогEDT, ИсполняемыйФайл, Истина);

Если НайденныеФайлы.Количество() = 0 Тогда
ВызватьИсключение "1cedtcli не найден";
КонецЕсли;

Результат = НайденныеФайлы[0].ПолноеИмя;
Лог.Информация("Найден исполняемый файл %1", Результат);
Возврат Результат;

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

Функция ОбернутьВКавычки(Знач Строка)
Возврат """" + Строка + """";
КонецФункции
Expand All @@ -376,78 +338,6 @@

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

// Функция - выполняет поиск всех установленных версий EDT
//
// Возвращаемое значение:
// Структура - отсортированные версии и пути к исполняемым файлам
//
Функция НайтиВсеУстановленныеEDT()

КаталогиEDT = Новый Соответствие;
ВерсииДляСортировки = Новый Массив;

КаталогиПоиска = КаталогиУстановкиЕДТПоУмолчанию();

РВ = Новый РегулярноеВыражение("1c[-|_]edt[-| ](\d+\.\d+(?:\.\d)*)");
РВ.ИгнорироватьРегистр = Истина;

Для Каждого КаталогПоиска Из КаталогиПоиска Цикл

Лог.Информация("Ищу версии EDT в каталоге ""%1""", КаталогПоиска);

ФайлыIni = НайтиФайлы(КаталогПоиска, "1cedt.ini", Истина);
Файлы = НайтиФайлы(КаталогПоиска, "1cedt", Истина);

Для Каждого Файл Из ФайлыIni Цикл
Файлы.Добавить(Файл);
КонецЦикла;

Для Каждого ТекФайл Из Файлы Цикл

Лог.Информация("Ищу совпадения регулярного выражения с именем файла ""%1""", ТекФайл.Путь);
КаталогВерсии = Новый Файл(ТекФайл.Путь);
Совпадения = РВ.НайтиСовпадения(КаталогВерсии.Имя);

Если Совпадения.Количество() = 0 Тогда
Продолжить;
КонецЕсли;

НайденнаяВерсия = Совпадения[0].Группы[1].Значение;

КаталогиEDT.Вставить(НайденнаяВерсия, ТекФайл.Путь);
ВерсииДляСортировки.Добавить(НайденнаяВерсия);

Лог.Информация("Найдена версия EDT ""%1"" в каталоге ""%2"".", НайденнаяВерсия, ТекФайл.Путь);
КонецЦикла;
КонецЦикла;

Версии.СортироватьВерсии(ВерсииДляСортировки, "УБЫВ");

Если ВерсииДляСортировки.Количество() = 0 Тогда
ВызватьИсключение "Не найдено ни одной установленной версии EDT";
КонецЕсли;

Возврат Новый Структура("Версии, КаталогиEDT", ВерсииДляСортировки, КаталогиEDT);

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

// скопировано из yard, код Abramov Dmitry
Функция КаталогиУстановкиЕДТПоУмолчанию()

СистемнаяИнформация = Новый СистемнаяИнформация();
Массив = Новый Массив();
Если ЭтоWindows() Тогда
Массив.Добавить(ОбъединитьПути(СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), "1C\1cedtstart\installations"));
Массив.Добавить("C:\Program Files\1C\1CE\components");
Иначе
Массив.Добавить("~/.local/share/1C/1cedtstart/installations");
Массив.Добавить("/opt/1C/1CE/components");
КонецЕсли;

Возврат Массив;

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

Процедура ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки)

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