Skip to content

Commit 1f3c14a

Browse files
authored
Merge pull request #40 from sfaqer/feature/edtExport
Реализована конвертация исходников хранилища в формат EDT
2 parents 5c976ab + ce83f4f commit 1f3c14a

File tree

29 files changed

+1250
-0
lines changed

29 files changed

+1250
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
1. `unpackForm` - добавляет функциональность распаковки обычных форм на исходники
1212
1. `tool1CD` - заменяет использование штатных механизмов 1С на приложение `tool1CD` при синхронизации
1313
1. `disable-support` - снимает конфигурацию с поддержки перед выгрузкой в исходники
14+
1. `edtExport` - добавляет функциональность выгрузки в формате `1C:EDT`
1415

1516
## Доработка
1617

features/edtExport.feature

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# language: ru
2+
3+
Функционал: Работа плагина выгрузки конфигурации в формат EDT
4+
Как Пользователь
5+
Я хочу выполнять автоматическую синхронизацию конфигурации из хранилища в формат EDT
6+
Чтобы не использовать ГитКонвертер
7+
8+
Контекст: Тестовый контекст edtExport
9+
Когда Я очищаю параметры команды "gitsync" в контексте
10+
И Я устанавливаю рабочей каталог во временный каталог
11+
И Я создаю новый объект ГитРепозиторий
12+
И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке
13+
И Я устанавливаю текущие плагины
14+
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С"
15+
И Я создаю временный каталог и сохраняю его в переменной "РабочееОкружениеEDT"
16+
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С"
17+
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников"
18+
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников"
19+
И Я создаю тестовой файл AUTHORS
20+
И Я записываю "0" в файл VERSION
21+
И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория"
22+
И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория"
23+
И Я добавляю параметр "-v" для команды "gitsync"
24+
И Я добавляю параметр "sync" для команды "gitsync"
25+
И Я добавляю параметр "-P test" для команды "gitsync"
26+
И Я выключаю все плагины
27+
И Я включаю плагин "edtExport"
28+
И Я включаю плагин "edtExport"
29+
30+
Сценарий: Cинхронизация с использованием edtExport
31+
Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
32+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
33+
Когда Я выполняю команду "gitsync"
34+
Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git"
35+
И Вывод команды "gitsync" не содержит "Внешнее исключение"
36+
И Код возврата команды "gitsync" равен 0
37+
38+
Сценарий: Cинхронизация хранилища расширения с использованием edtExport без указания базового проекта
39+
Допустим Я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилища1С"
40+
И я скопировал каталог рабочего окружения EDT в каталог из переменной "РабочееОкружениеEDT"
41+
И Я добавляю параметр "-e test" для команды "gitsync"
42+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
43+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
44+
Когда Я выполняю команду "gitsync"
45+
Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git"
46+
И Вывод команды "gitsync" не содержит "Внешнее исключение"
47+
И Код возврата команды "gitsync" равен 0
48+
49+
Сценарий: Cинхронизация хранилища расширения с использованием edtExport c указанием базового проекта
50+
Допустим Я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилища1С"
51+
И я скопировал каталог рабочего окружения EDT в каталог из переменной "РабочееОкружениеEDT"
52+
И Я добавляю параметр "-e test" для команды "gitsync"
53+
И Я добавляю параметр "-W" для команды "gitsync" из переменной "РабочееОкружениеEDT"
54+
И Я добавляю параметр "-B edtExport" для команды "gitsync"
55+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С"
56+
И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников"
57+
Когда Я выполняю команду "gitsync"
58+
Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git"
59+
И Вывод команды "gitsync" не содержит "Внешнее исключение"
60+
И Код возврата команды "gitsync" равен 0
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#Использовать fs
2+
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
3+
4+
Перем БДД; //контекст фреймворка 1bdd
5+
6+
// Метод выдает список шагов, реализованных в данном файле-шагов
7+
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
8+
БДД = КонтекстФреймворкаBDD;
9+
10+
ВсеШаги = Новый Массив;
11+
12+
ВсеШаги.Добавить("ЯСкопировалКаталогРабочегоОкруженияEDTВКаталогИзПеременной");
13+
14+
Возврат ВсеШаги;
15+
КонецФункции
16+
17+
// Реализация шагов
18+
19+
// Процедура выполняется перед запуском каждого сценария
20+
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
21+
22+
КонецПроцедуры
23+
24+
// Процедура выполняется после завершения каждого сценария
25+
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
26+
27+
КонецПроцедуры
28+
29+
30+
//я скопировал каталог рабочего окружения EDT в каталог из переменной "РабочееОкружениеEDT"
31+
Процедура ЯСкопировалКаталогРабочегоОкруженияEDTВКаталогИзПеременной(Знач ИмяПеременной) Экспорт
32+
РабочееОкружениеEDT = БДД.ПолучитьИзКонтекста(ИмяПеременной);
33+
ФС.ОбеспечитьПустойКаталог(РабочееОкружениеEDT);
34+
ФС.КопироватьСодержимоеКаталога(ПутьКРабочемуОкружениюEDT(), РабочееОкружениеEDT);
35+
КонецПроцедуры
36+
37+
Функция ПутьКРабочемуОкружениюEDT()
38+
39+
Возврат ОбъединитьПути(КаталогFixtures(), "edtWorkspace");
40+
41+
КонецФункции
42+
43+
Функция КаталогFixtures()
44+
Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures");
45+
КонецФункции
46+
47+
Функция КаталогГитсинк()
48+
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..");
49+
КонецФункции

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


0 commit comments

Comments
 (0)