Skip to content

Доработки плагинов use-ibcmd, sync-remote, edt-export. #87

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
2 changes: 1 addition & 1 deletion .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.8.3']
oscript_version: ['1.9.2']

steps:
# Загрузка проекта
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.8.3']
oscript_version: ['1.9.2']
package_mask: ["gitsync-plugins-*.ospx"]

steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
oscript_version: ['1.8.3']
oscript_version: ['1.9.2']

steps:
# Загрузка проекта
Expand Down
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
КонецПроцедуры

Описание.Имя("gitsync-plugins")
.Версия("1.6.0")
.Версия("1.6.1")
.Автор("Khorev A.A. and SilverBulleters")
.АдресАвтора("[email protected],[email protected]")
.Описание("Набор предустановленных плагинов для gitsync")
Expand Down
300 changes: 263 additions & 37 deletions src/Классы/edtExport.os
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#Использовать logos
#Использовать tempfiles
#Использовать fs
#Использовать semver

Перем ВерсияПлагина;
Перем Лог;
Expand Down Expand Up @@ -100,27 +101,25 @@

Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды);

КлассРеализации.Опция("P project-name", "", "[*edtExport] Имя проекта")
.ТСтрока()
.ВОкружении("GITSYNC_PROJECT_NAME");
КлассРеализации.Опция("PN project-name", "", "[*edtExport] Имя проекта")
.ТСтрока()
.ВОкружении("GITSYNC_PROJECT_NAME");

КлассРеализации.Опция("W workspace-location", "", "[*edtExport] расположение рабочей области")
.ТСтрока()
.ВОкружении("GITSYNC_WORKSPACE_LOCATION");

КлассРеализации.Опция(
"B base-project-name",
"",
"[*edtExport] имя базового проекта в рабочей области (для расширений))")
.ТСтрока()
.ВОкружении("GITSYNC_BASE_PROJECT_NAME");

КлассРеализации.Опция(
"M module",
"",
"[*edtExport] имя установленного модуля edt")
.ТСтрока()
.ВОкружении("GITSYNC_MODULE");
.ТСтрока()
.ВОкружении("GITSYNC_WORKSPACE_LOCATION");

КлассРеализации.Опция("BP base-project-name",
"",
"[*edtExport] имя базового проекта в рабочей области (для расширений))")
.ТСтрока()
.ВОкружении("GITSYNC_BASE_PROJECT_NAME");

КлассРеализации.Опция("M module",
"",
"[*edtExport] имя установленного модуля edt")
.ТСтрока()
.ВОкружении("GITSYNC_MODULE");

КонецПроцедуры

Expand Down Expand Up @@ -185,24 +184,8 @@
Лог.Отладка("Каталог проекта EDT: %1", КаталогПроекта);
ФС.ОбеспечитьПустойКаталог(КаталогПроекта);

Команда = Новый Команда;

Параметры = Новый Массив();
Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки));
Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", ВременноеРабочееПространство));
Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта));

Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда
Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта));
КонецЕсли;
Команда = КомандаКонвертации(КаталогВыгрузки, ВременноеРабочееПространство, КаталогПроекта);

Команда.УстановитьСтрокуЗапуска(СтрШаблон("ring %1 workspace import", ИмяМодуля));
Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI);
Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport");
Команда.ДобавитьПараметры(Параметры);
Команда.УстановитьИсполнениеЧерезКомандыСистемы(Истина);
Команда.ПоказыватьВыводНемедленно(Ложь);
Команда.УстановитьПравильныйКодВозврата(0);
КодВозврата = Команда.Исполнить();

Лог.Отладка("Код возврата EDT: %1", КодВозврата);
Expand All @@ -228,6 +211,249 @@

#Область Вспомогательные_процедуры_и_функции

// Функция - получает команду запуска утилиты ring для выполнения конвертации
//
// Возвращаемое значение:
// Команда - команда запуска утилиты ring для выполнения конвертации
//
Функция КомандаКонвертации(КаталогВыгрузки, РабочееПространство, КаталогПроекта)

ВерсияEDT = ВерсияEDT();

Если Лев(ВерсияEDT(), 4) >= "2024" Тогда
Команда = КомандаEdtcli(КаталогВыгрузки, РабочееПространство, КаталогПроекта);
Иначе
Команда = КомандаRing(КаталогВыгрузки, РабочееПространство, КаталогПроекта);
КонецЕсли;

Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI);
Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport");
Команда.УстановитьИсполнениеЧерезКомандыСистемы(Истина);
Команда.ПоказыватьВыводНемедленно(Ложь);
Команда.УстановитьПравильныйКодВозврата(0);

Возврат Команда;

КонецФункции // КомандаКонвертации()

// Функция - получает команду запуска утилиты ring для выполнения конвертации
//
// Возвращаемое значение:
// Команда - команда запуска утилиты ring для выполнения конвертации
//
Функция КомандаRing(КаталогВыгрузки, РабочееПространство, КаталогПроекта)

Команда = Новый Команда;

Параметры = Новый Массив();
Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки));
Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", РабочееПространство));
Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта));

Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда
Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта));
КонецЕсли;

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

Команда.УстановитьСтрокуЗапуска(СтрШаблон("%1 %2 workspace import", ИсполняемыйФайл, ИмяМодуля));
Команда.ДобавитьПараметры(Параметры);

Возврат Команда;

КонецФункции // КомандаRing()

// Функция - получает команду запуска утилиты edtcli для выполнения конвертации
//
// Возвращаемое значение:
// Команда - команда запуска утилиты edtcli для выполнения конвертации
//
Функция КомандаEdtcli(КаталогВыгрузки, РабочееПространство, КаталогПроекта)

Команда = Новый Команда;

Параметры = Новый Массив();
Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта));
Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки));
// Параметры.Добавить(СтрШаблон("--version ""%1""", Параметры.ВерсияПлатформы));

Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда
Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта));
КонецЕсли;

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

Команда.УстановитьСтрокуЗапуска(СтрШаблон("%1 -data ""%2"" -command import",
ИсполняемыйФайл,
РабочееПространство));
Команда.ДобавитьПараметры(Параметры);

Возврат Команда;

КонецФункции // КомандаEdtcli()

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

РасположениеRing = НайтиКоманду("ring");

Если ЗначениеЗаполнено(РасположениеRing) Тогда
Возврат РасположениеRing;
КонецЕсли;

Если ЭтоWindows() Тогда
КаталогПрограмм = ПолучитьПеременнуюСреды("ProgramW6432");
Расширение = ".cmd";
Иначе
КаталогПрограмм = "/opt";
Расширение = "";
КонецЕсли;
ПутьУстановки_1CE = ОбъединитьПути(КаталогПрограмм, "1C", "1CE", "components");
Файлы = НайтиФайлы(ПутьУстановки_1CE, СтрШаблон("ring%1", Расширение), Истина);

Если Файлы.Количество() > 0 Тогда
Возврат Файлы[0].ПолноеИмя;
КонецЕсли;

Возврат "";

КонецФункции // НайтиRing()

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

РасположениеEdtcli = НайтиКоманду("1cedtcli");

Если ЗначениеЗаполнено(РасположениеEdtcli) Тогда
Возврат РасположениеEdtcli;
КонецЕсли;

Если ЭтоWindows() Тогда
КаталогПрограмм = ПолучитьПеременнуюСреды("ProgramW6432");
Расширение = ".exe";
Иначе
КаталогПрограмм = "/opt";
Расширение = "";
КонецЕсли;
ПутьУстановки_1CE = ОбъединитьПути(КаталогПрограмм, "1C", "1CE", "components");
Файлы = НайтиФайлы(ПутьУстановки_1CE, СтрШаблон("1cedtcli%1", Расширение), Истина);

Если Файлы.Количество() > 0 Тогда
Возврат Файлы[0].ПолноеИмя;
КонецЕсли;

Возврат "";

КонецФункции // НайтиEdtcli()

// Функция - выполняет поиск указанной команды в текущем каталоге или переменной окружения PATH
//
// Параметры:
// ИмяКоманды - Строка - имя команды для поиска
//
// Возвращаемое значение:
// Строка - полный путь к команде
//
Функция НайтиКоманду(Знач ИмяКоманды)

ЭтоWindows = ЭтоWindows();

Команда = Новый Команда();
Если ЭтоWindows Тогда
Команда.УстановитьКоманду("where");
Иначе
Команда.УстановитьКоманду("which");
КонецЕсли;
Команда.ДобавитьПараметр(ИмяКоманды);

Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь);
Команда.ПоказыватьВыводНемедленно(Ложь);

КодВозврата = Команда.Исполнить();

ВыводКоманды = СокрЛП(Команда.ПолучитьВывод());

Если КодВозврата = 0 Тогда
Лог.Отладка("Найдена команда ""%1"": %2", ИмяКоманды, ВыводКоманды);
Иначе
Лог.Предупреждение("Команда ""%1"" не найдена в текущем каталоге или в переменной окружения PATH:%2%3",
ИмяКоманды,
Символы.ПС,
ВыводКоманды);
Возврат "";
КонецЕсли;

Если ФС.ФайлСуществует(ВыводКоманды) Тогда
Возврат ВыводКоманды;
КонецЕсли;

Возврат "";

КонецФункции // НайтиКоманду()

// Функция - проверяет, что скрипт выполняется в среде Windows
//
// Возвращаемое значение:
// Булево - Истина - скрипт выполняется в среде Windows
//
Функция ЭтоWindows() Экспорт

СистемнаяИнформация = Новый СистемнаяИнформация;
Возврат Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

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

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

РасположениеEdtcli = НайтиEdtcli();

ФайлEdtcli = Новый Файл(РасположениеEdtcli);
КаталогEdtcli = Новый Файл(ФайлEdtcli.Путь);
КаталогEdtcli = Новый Файл(КаталогEdtcli.Путь);

Файлы = НайтиФайлы(КаталогEdtcli.Путь, "1cedt.ini", Истина);
РВ = Новый РегулярноеВыражение("1c-edt-(\d+\.\d+\.\d+)\+");

НомераВерсий = Новый Массив();

Для Каждого ТекФайл Из Файлы Цикл
КаталогВерсии = Новый Файл(ТекФайл.Путь);

Совпадения = РВ.НайтиСовпадения(КаталогВерсии.Имя);

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

НомераВерсий.Добавить(Совпадения[0].Группы[1].Значение);
Лог.Отладка("Найдена версия EDT ""%1"" в каталоге ""%2"".", Совпадения[0].Группы[1].Значение, ТекФайл.Путь);
КонецЦикла;

Версии.СортироватьВерсии(НомераВерсий, "УБЫВ");

Если НомераВерсий.Количество() = 0 Тогда
Лог.Предупреждение("Не найдена версия EDT");
КонецЕсли;

Лог.Отладка("Найдена версия EDT ""%1"".", НомераВерсий[0]);

Возврат НомераВерсий[0];

КонецФункции // ВерсияEDT()

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

ПутьКФайлуДополнительнойВыгрузки = ВременныеФайлы.НовоеИмяФайла();
Expand Down Expand Up @@ -390,7 +616,7 @@

Процедура Инициализация()

ВерсияПлагина = "1.3.0";
ВерсияПлагина = "1.4.0";
Лог = Логирование.ПолучитьЛог(ИмяЛога());
КомандыПлагина = Новый Массив;
КомандыПлагина.Добавить("sync");
Expand Down
Loading
Loading