Skip to content

Commit 6d54f65

Browse files
committed
Реализована конвертация исходников хранилища в формат EDT
1 parent 5c976ab commit 6d54f65

File tree

3 files changed

+231
-0
lines changed

3 files changed

+231
-0
lines changed

features/edtExport.feature

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# language: ru
2+
3+
Функционал: Работа плагина выгрузки конфигурации в формат EDT
4+
Как Пользователь
5+
Я хочу выполнять автоматическую синхронизацию конфигурации из хранилища в формат EDT
6+
Чтобы не использовать ГитКонвертер
7+
8+
Контекст: Тестовый контекст edtExport
9+
Когда Я очищаю параметры команды "gitsync" в контексте
10+
И Я устанавливаю рабочей каталог во временный каталог
11+
И Я создаю новый объект ГитРепозиторий
12+
И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке
13+
И Я устанавливаю текущие плагины
14+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С"
15+
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С"
16+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников"
17+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников"
18+
И Я создаю тестовой файл AUTHORS
19+
И Я записываю "0" в файл VERSION
20+
И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория"
21+
И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория"
22+
И Я добавляю параметр "-v" для команды "gitsync"
23+
И Я добавляю параметр "sync" для команды "gitsync"
24+
И Я добавляю параметр "-P test" для команды "gitsync"
25+
И Я выключаю все плагины
26+
И Я включаю плагин "edtExport"
27+
И Я включаю плагин "edtExport"
28+
29+
Сценарий: Cинхронизация с использованием edtExport
30+
Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
31+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
32+
Когда Я выполняю команду "gitsync"
33+
Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git"
34+
И Вывод команды "gitsync" не содержит "Внешнее исключение"
35+
И Код возврата команды "gitsync" равен 0
36+
37+
# Сценарий: Cинхронизация хранилища расширения с использованием edtExport
38+
# Допустим Я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилища1С"
39+
# И Я добавляю параметр "-e test" для команды "gitsync"
40+
# И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
41+
# И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
42+
# Когда Я выполняю команду "gitsync"
43+
# Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git"
44+
# И Вывод команды "gitsync" не содержит "Внешнее исключение"
45+
# И Код возврата команды "gitsync" равен 0

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,5 @@
4040
.ОпределяетКласс("Плагин_РаспаковкиОбычныхФорм", "src/Классы/unpackForm.os")
4141
.ОпределяетКласс("Плагин_СнятияСПоддержки", "src/Классы/disableSupport.os")
4242
.ОпределяетКласс("Плагин_СинхронизацииСУдаленнымРепозиторием", "src/Классы/syncRemote.os")
43+
.ОпределяетКласс("Плагин_ВыгрузкаВФорматеEDT", "src/Классы/edtExport.os")
4344
;

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

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
#Использовать logos
2+
#Использовать tempfiles
3+
4+
Перем ВерсияПлагина;
5+
Перем Лог;
6+
Перем Обработчик;
7+
Перем КомандыПлагина;
8+
9+
Перем ИмяПроекта;
10+
11+
#Область Интерфейс_плагина
12+
13+
// Возвращает версию плагина
14+
//
15+
// Возвращаемое значение:
16+
// Строка - текущая версия плагина
17+
//
18+
Функция Версия() Экспорт
19+
Возврат ВерсияПлагина;
20+
КонецФункции
21+
22+
// Возвращает приоритет выполнения плагина
23+
//
24+
// Возвращаемое значение:
25+
// Число - приоритет выполнения плагина
26+
//
27+
Функция Приоритет() Экспорт
28+
Возврат 0;
29+
КонецФункции
30+
31+
// Возвращает описание плагина
32+
//
33+
// Возвращаемое значение:
34+
// Строка - описание функциональности плагина
35+
//
36+
Функция Описание() Экспорт
37+
Возврат "Плагин добавляет возможность выгрузки в формате EDT."
38+
+ " Важно: Для работы плагина необходимы установленные EDT и Ring";
39+
КонецФункции
40+
41+
// Возвращает подробную справку к плагину
42+
//
43+
// Возвращаемое значение:
44+
// Строка - подробная справка для плагина
45+
//
46+
Функция Справка() Экспорт
47+
Возврат "Справка плагина";
48+
КонецФункции
49+
50+
// Возвращает имя плагина
51+
//
52+
// Возвращаемое значение:
53+
// Строка - имя плагина при подключении
54+
//
55+
Функция Имя() Экспорт
56+
Возврат "edtExport";
57+
КонецФункции
58+
59+
// Возвращает имя лога плагина
60+
//
61+
// Возвращаемое значение:
62+
// Строка - имя лога плагина
63+
//
64+
Функция ИмяЛога() Экспорт
65+
Возврат "oscript.lib.gitsync.plugins.edtExport";
66+
КонецФункции
67+
68+
#КонецОбласти
69+
70+
#Область Подписки_на_события
71+
72+
Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт
73+
74+
Обработчик = СтандартныйОбработчик;
75+
76+
КонецПроцедуры
77+
78+
Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт
79+
80+
Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды);
81+
Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда
82+
Возврат;
83+
КонецЕсли;
84+
85+
Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды);
86+
87+
КлассРеализации.Опция("P project-name", , "[*edtExport] Имя проекта")
88+
.ТСтрока()
89+
.ВОкружении("GITSYNC_PROJECT_NAME");
90+
91+
КонецПроцедуры
92+
93+
Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт
94+
95+
ИмяПроекта = ПараметрыКоманды.Параметр("project-name");
96+
97+
Если Не ЗначениеЗаполнено(ИмяПроекта) Тогда
98+
ВызватьИсключение "Не заполнено имя проекта";
99+
КонецЕсли;
100+
101+
КонецПроцедуры
102+
103+
// BSLLS:UnusedParameters-off
104+
Процедура ПередПеремещениемВКаталогРабочейКопии(
105+
Конфигуратор,
106+
КаталогРабочейКопии,
107+
КаталогВыгрузки,
108+
ПутьКХранилищу,
109+
НомерВерсии) Экспорт
110+
// BSLLS:UnusedParameters-on
111+
112+
Лог.Отладка("Начинаю выгрузку EDT");
113+
Лог.Отладка("Имя проекта: %1", ИмяПроекта);
114+
115+
РабочееПространство = ВременныеФайлы.СоздатьКаталог();
116+
117+
Лог.Отладка("Рабочее пространство EDT: %1", РабочееПространство);
118+
119+
КаталогПроекта = ОбъединитьПути(РабочееПространство, ИмяПроекта);
120+
121+
Лог.Отладка("Каталог проекта EDT: %1", КаталогПроекта);
122+
123+
Команда = Новый Команда;
124+
125+
Параметры = Новый Массив();
126+
Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки));
127+
Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", РабочееПространство));
128+
Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта));
129+
130+
Команда.УстановитьСтрокуЗапуска("ring edt workspace import");
131+
Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI);
132+
Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport");
133+
Команда.ДобавитьПараметры(Параметры);
134+
Команда.УстановитьИсполнениеЧерезКомандыСистемы(Истина);
135+
Команда.ПоказыватьВыводНемедленно(Ложь);
136+
Команда.УстановитьПравильныйКодВозврата(0);
137+
КодВозврата = Команда.Исполнить();
138+
139+
Лог.Отладка("Код возврата EDT: %1", КодВозврата);
140+
141+
Лог.Отладка("Очищаю каталог выгрузки");
142+
УдалитьФайлы(КаталогВыгрузки, "*");
143+
144+
Лог.Отладка("Копирую каталог проекта EDT в каталог выгрузки");
145+
КопироватьКаталог(КаталогПроекта, КаталогВыгрузки);
146+
147+
148+
КонецПроцедуры
149+
150+
#КонецОбласти
151+
152+
Процедура КопироватьКаталог(СтарыйПуть, НовыйПуть) Экспорт
153+
154+
Для Каждого НайденныйОбъект Из НайтиФайлы(СтарыйПуть, "*.*", Истина) Цикл
155+
156+
Если НайденныйОбъект.ЭтоКаталог() Тогда
157+
158+
СоздатьКаталог(СтрЗаменить(НайденныйОбъект.ПолноеИмя, СтарыйПуть, НовыйПуть));
159+
Продолжить;
160+
161+
Иначе
162+
163+
КаталогПереносимогоФайла = Новый Файл(СтрЗаменить(НайденныйОбъект.путь, СтарыйПуть, НовыйПуть));
164+
Если НЕ КаталогПереносимогоФайла.Существует() Тогда
165+
СоздатьКаталог(КаталогПереносимогоФайла.ПолноеИмя);
166+
КонецЕсли;
167+
168+
КопироватьФайл(НайденныйОбъект.ПолноеИмя, СтрЗаменить(НайденныйОбъект.ПолноеИмя, СтарыйПуть, НовыйПуть));
169+
170+
КонецЕсли;
171+
172+
КонецЦикла;
173+
174+
КонецПроцедуры
175+
176+
Процедура Инициализация()
177+
178+
ВерсияПлагина = "1.1.1";
179+
Лог = Логирование.ПолучитьЛог(ИмяЛога());
180+
КомандыПлагина = Новый Массив;
181+
КомандыПлагина.Добавить("sync");
182+
183+
КонецПроцедуры
184+
185+
Инициализация();

0 commit comments

Comments
 (0)