Skip to content

Реализована команда all #146

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

Merged
merged 7 commits into from
Aug 10, 2018
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
47 changes: 47 additions & 0 deletions config-example.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
globals:
storage-user: Администратор
storage-pwd: ''
git-path: git
temp-dir: ""
v8version: 8.3
domain-email: localhost
lic-try-count: 5
plugins:
enable:
- test
- test2
disable:
- test3
plugins-config:
git-url: git-url
push: true
pull: true
repositories:
- name: <ТестовыйРепозиторий>
disable: true
storage-path: <КаталогХранилища1С_1>
git-local-path: <ПутьКаталогаИсходников_1>
- name: <ТестовыйРепозиторий2>
disable: true
storage-path: <КаталогХранилища1С_2>
git-local-path: <ПутьКаталогаИсходников_2>
storage-user: Администратор
storage-pwd: ''
git-path: git
temp-dir: ""
v8version: 8.3
domain-email: localhost
lic-try-count: 5
plugins:
enable:
- test
- test2
disable:
- test3
plugins-config:
git-url: git-url
push: true
pull: true



145 changes: 145 additions & 0 deletions features/step_definitions/sync.batch.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
#Использовать tempfiles
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ЯСоздаюНовыйОбъектПакетнаясинхронизация");
ВсеШаги.Добавить("ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной");
ВсеШаги.Добавить("ЯЗаписываюВФайлVersionВКаталогеИзПеременной");
ВсеШаги.Добавить("ЯДобавляюФайлВКаталогПроектаССодержанием");
ВсеШаги.Добавить("ЯЗаменяюЗначениемИзПеременнойВФайле");
ВсеШаги.Добавить("ЯУстанавливаюФайлНастройкиВПакетнаясинхронизация");
ВсеШаги.Добавить("ЯУстанавливаюАвторизациюСПаролемВПакетнаясинхронизация");
ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформыВПакетнаясинхронизация");
ВсеШаги.Добавить("ЯВыполняюВыполняютПакетнуюСинхронизацию");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

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

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
ВременныеФайлы.Удалить();
КонецПроцедуры


//Я создаю новый объект ПакетнаяСинхронизация
Процедура ЯСоздаюНовыйОбъектПакетнаясинхронизация() Экспорт

ПакетнаяСинхронизация = Новый ПакетнаяСинхронизация;

БДД.СохранитьВКонтекст("ПакетнаяСинхронизация", ПакетнаяСинхронизация);

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

//Я добавляю файл "example.yaml" в каталог проекта с содержанием
//"""
//"""
Процедура ЯДобавляюФайлВКаталогПроектаССодержанием(Знач ИмяФайла, Знач ТекстФайла) Экспорт
КаталогПроекта = БДД.ПолучитьИзКонтекста("КаталогПроекта");
ФайлНастроек = Новый ЗаписьТекста;
ФайлНастроек.Открыть(ОбъединитьПути(КаталогПроекта, ИмяФайла), "utf-8");
ФайлНастроек.ЗаписатьСтроку(ТекстФайла);
ФайлНастроек.Закрыть();
КонецПроцедуры

//Я заменяю "<КаталогХранилища1С_1>" значением из переменной "КаталогХранилища1С_1" в файле "example.yaml"
Процедура ЯЗаменяюЗначениемИзПеременнойВФайле(Знач ЗначениеПоиска, Знач ИмяПеременной, Знач ИмяФайла) Экспорт

КаталогПроекта = БДД.ПолучитьИзКонтекста("КаталогПроекта");

ПутьКФайлу = ОбъединитьПути(КаталогПроекта, ИмяФайла);

ФайлНастроек = Новый ЧтениеТекста(ПутьКФайлу);
ТекстФайла = ФайлНастроек.Прочитать();
ФайлНастроек.Закрыть();

ЗначениеЗамены = БДД.ПолучитьИзКонтекста(ИмяПеременной);

ТекстФайла = СтрЗаменить(ТекстФайла, ЗначениеПоиска, ЗначениеЗамены);

ФайлНастроек = Новый ЗаписьТекста;
ФайлНастроек.Открыть(ПутьКФайлу, "utf-8");
ФайлНастроек.ЗаписатьСтроку(ТекстФайла);
ФайлНастроек.Закрыть();


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

//Я устанавливаю авторизацию "Администратор" с паролем "" в ПакетнаяСинхронизация
Процедура ЯУстанавливаюАвторизациюСПаролемВПакетнаясинхронизация(Знач Пользователь, Знач Пароль) Экспорт

ПакетнаяСинхронизация = БДД.ПолучитьИзКонтекста("ПакетнаяСинхронизация");
ПакетнаяСинхронизация.АвторизацияВХранилищеКонфигурации(Пользователь, Пароль);

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

//Я устанавливаю версию платформы "8.3" в ПакетнаяСинхронизация
Процедура ЯУстанавливаюВерсиюПлатформыВПакетнаясинхронизация(Знач ВерсияПлатформы) Экспорт

ПакетнаяСинхронизация = БДД.ПолучитьИзКонтекста("ПакетнаяСинхронизация");
ПакетнаяСинхронизация.ВерсияПлатформы(ВерсияПлатформы);

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

//Я выполняю выполняют пакетную синхронизацию
Процедура ЯВыполняюВыполняютПакетнуюСинхронизацию() Экспорт

ПакетнаяСинхронизация = БДД.ПолучитьИзКонтекста("ПакетнаяСинхронизация");
ПакетнаяСинхронизация.ВыполнитьСинхронизацию();

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

//Я устанавливаю файл настройки "example.yaml" в ПакетнаяСинхронизация
Процедура ЯУстанавливаюФайлНастройкиВПакетнаясинхронизация(Знач ИмяФайла) Экспорт

КаталогПроекта = БДД.ПолучитьИзКонтекста("КаталогПроекта");

ПутьКФайлу = ОбъединитьПути(КаталогПроекта, ИмяФайла);

ПакетнаяСинхронизация = БДД.ПолучитьИзКонтекста("ПакетнаяСинхронизация");

ПакетнаяСинхронизация.УстановитьНастройки(ПутьКФайлу);

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

//Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1"
Процедура ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной(Знач ИмяПеременной) Экспорт
ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ИмяПеременной);
ФайлАвторов = Новый ЗаписьТекста;
ФайлАвторов.Открыть(ОбъединитьПути(ПутьКаталогаИсходников, "AUTHORS"), "utf-8");
ФайлАвторов.ЗаписатьСтроку("Администратор=Администратор <admin@localhost>");
ФайлАвторов.ЗаписатьСтроку("Отладка=Отладка <debug@localhost>");
ФайлАвторов.Закрыть();
КонецПроцедуры

//Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1"
Процедура ЯЗаписываюВФайлVersionВКаталогеИзПеременной(Знач НомерВерсии, Знач ИмяПеременной) Экспорт

ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ИмяПеременной);

ПутьКФайлуВерсий = ОбъединитьПути(ПутьКаталогаИсходников,"VERSION");
Попытка
Запись = Новый ЗаписьТекста(ПутьКФайлуВерсий, "utf-8");
Запись.ЗаписатьСтроку("<?xml version=""1.0"" encoding=""UTF-8""?>");
Запись.ЗаписатьСтроку("<VERSION>" + НомерВерсии + "</VERSION>");
Запись.Закрыть();
Исключение
Если Запись <> Неопределено Тогда
ОсвободитьОбъект(Запись);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
102 changes: 102 additions & 0 deletions features/sync.batch.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# language: ru

Функционал: Пакетная синхронизация хранилищ конфигурации 1С и гит
Как Пользователь
Я хочу выполнять автоматическую синхронизацию конфигурации из хранилища
Чтобы автоматизировать свою работы с хранилищем с git

Контекст: Тестовый контекст синхронизации
Когда Я создаю новый объект ГитРепозиторий
И Я создаю новый объект ПакетнаяСинхронизация
# Подготовка хранилища 1
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_1"
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_1"
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_1"
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_1"
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1"
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1"

# Подготовка хранилища 2
И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_2"
И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_2"
И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_2"
И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_2"
И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_2"
И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_2"

И Я создаю временный каталог и сохраняю его в переменной "КаталогПроекта"
И Я добавляю файл "example.yaml" в каталог проекта с содержанием
"""
globals:
storage-user: Администратор
storage-pwd: ''
git-path: git
temp-dir: ""
v8version: 8.3
domain-email: localhost
lic-try-count: 5
plugins:
enable:
- test
- test2
disable:
- test3
plugins-config:
git-url: git-url
push: true
pull: true
repositories:
- name: <ТестовыйРепозиторий>
# disable: false
path: <КаталогХранилища1С_1>
dir: <ПутьКаталогаИсходников_1>
plugins:
more:
- test3
plugins-config:
git-url: git-url
push: true
pull: true
- name: <ТестовыйРепозиторий2>
# disable: true
path: <КаталогХранилища1С_2>
dir: <ПутьКаталогаИсходников_2>
storage-user: Администратор
storage-pwd: ''
git-path: git
temp-dir: ""
v8version: 8.3
domain-email: localhost
lic-try-count: 5

"""

И Я заменяю "<КаталогХранилища1С_1>" значением из переменной "КаталогХранилища1С_1" в файле "example.yaml"
И Я заменяю "<ПутьКаталогаИсходников_1>" значением из переменной "ПутьКаталогаИсходников_1" в файле "example.yaml"
И Я заменяю "<КаталогХранилища1С_2>" значением из переменной "КаталогХранилища1С_2" в файле "example.yaml"
И Я заменяю "<ПутьКаталогаИсходников_2>" значением из переменной "ПутьКаталогаИсходников_2" в файле "example.yaml"
И Я устанавливаю файл настройки "example.yaml" в ПакетнаяСинхронизация
# И Я включаю отладку лога с именем "oscript.lib.gitsync.batch"
# И Я включаю отладку лога с именем "oscript.lib.configor"
# И Я включаю отладку лога с именем "oscript.lib.configor.yaml"
# И Я включаю отладку лога с именем "oscript.lib.configor.constructor"

Сценарий: Простая синхронизация хранилища с git-репозиторием
Допустим Я устанавливаю авторизацию "Администратор" с паролем "" в ПакетнаяСинхронизация
И Я устанавливаю версию платформы "8.3" в ПакетнаяСинхронизация
Когда Я выполняю выполняют пакетную синхронизацию
Тогда Вывод лога содержит "Завершена синхронизации с git"

# Сценарий: Cинхронизация хранилища с git-репозиторием c плагинами
# Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем ""
# И Я устанавливаю версию платформы "8.3"
# И Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов"
# И Я создаю новый УправлениеПлагинами
# И Я собираю тестовый плагин и сохраняю в контекст "ПутьКФайлуПлагина"
# И Я устанавливаю файл плагина из переменной "ПутьКФайлуПлагина"
# И Я загружаю плагины из каталога в переменной "КаталогПлагинов"
# И Я подключаю плагины в МенеджерСинхронизации
# Когда Я выполняю выполняют синхронизацию
# Тогда Вывод лога содержит "Завершена синхронизации с git"
# И Вывод лога содержит "Вызвано событие <ПриАктивизации> для плагина <test_plugin>"

1 change: 1 addition & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
.ЗависитОт("reflector", "0.4.0")
.ЗависитОт("opm", "0.14.1")
.ЗависитОт("cli", "0.9.8")
.ЗависитОт("configor", "0.5.2")
.ВключитьФайл("src")
.ВключитьФайл("docs")
.ВключитьФайл("embedded_plugins")
Expand Down
6 changes: 3 additions & 3 deletions src/cmd/gitsync.os
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,12 @@
Новый КомандаSync);
Приложение.ДобавитьКоманду("clone c", "Клонирует существующий репозиторий и создает служебные файлы",
Новый КомандаClone);
//Приложение.ДобавитьКоманду("all a", "Запускает синхронизацию по нескольким репозиториям", Новый КомандаAll);
Приложение.ДобавитьКоманду("all a", "Запускает синхронизацию по нескольким репозиториям",
Новый КомандаAll);
Приложение.ДобавитьКоманду("set-version sv", "Устанавливает необходимую версию в файл VERSION",
Новый КомандаSetVersion);
Приложение.ДобавитьКоманду("plugins p", "Управление плагинами gitsync",
Новый Командаplugins);
Новый КомандаPlugins);

Приложение.УстановитьДействиеПередВыполнением(ЭтотОбъект);

Expand All @@ -65,7 +66,6 @@
ВерсияПлатформы = Команда.ЗначениеОпции("v8version");
ВыводДополнительнойИнформации = Команда.ЗначениеОпции("verbose");
ПутьКГит = Команда.ЗначениеОпции("git-path");
ДоменПочты = Команда.ЗначениеОпции("domain-email");
ВременныйКаталогРаботы = Команда.ЗначениеОпции("tempdir");
ДоменПочты = Команда.ЗначениеОпции("domain-email");

Expand Down
Loading