Skip to content

Feature/ref #37

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 29 commits into from
Feb 13, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
8edcfe8
Добавлены файлы редактируемой версии gitsync
bia-tech Feb 3, 2017
d86c256
Исправлена ошибка неудаления временных файлов
bia-tech Feb 3, 2017
6e250bc
Обновлены служебные файлы.
bia-tech Feb 3, 2017
87853fe
Исправлены ошибки неочистки темповых файлов
bia-tech Feb 6, 2017
ee55c71
Добавлена команда clone
bia-tech Feb 6, 2017
fb9e14d
Обновления команд clone и init
bia-tech Feb 6, 2017
90d49f5
ДОбавлена реализация команды set-version
bia-tech Feb 6, 2017
457bc83
Скорректировано описание модулей команд
bia-tech Feb 6, 2017
da9fb62
Добавлена команда export
bia-tech Feb 6, 2017
8105108
Добавлена команда all и внесены исправления по остальным
bia-tech Feb 6, 2017
07662ac
Доделана синхронизация и удалены лишние модули
bia-tech Feb 6, 2017
1299726
Добавил возможность запуска sync без указания имени (вернул обратную …
bia-tech Feb 6, 2017
c7e0f8f
Добавил таб вместо пробела у src
bia-tech Feb 6, 2017
75a85e4
Добавлен модуль с константами и скорректировано формирование версии п…
bia-tech Feb 7, 2017
4483a87
Вернул исходный tasks.json
bia-tech Feb 7, 2017
65a14a3
Вернул весь исходный tasks.json
bia-tech Feb 7, 2017
e56f8ea
Скорректированы модули под рекомендации oscript-app-template (C) Evil…
bia-tech Feb 7, 2017
da4416a
Указал верный идентификатор лога
bia-tech Feb 7, 2017
a9baabf
tab vs space
bia-tech Feb 7, 2017
d09b5a3
tab vs space
bia-tech Feb 7, 2017
2498815
Внес патч по рекомендации
bia-tech Feb 13, 2017
8e3e129
Перенес метод ТребуетсяСинхронизироватьХранилище
bia-tech Feb 13, 2017
3ccdfa1
Убрал неиспользуемый код "НеРеализовано"
bia-tech Feb 13, 2017
36c9147
Убрал лишнее указание стартового имени
bia-tech Feb 13, 2017
2d9e036
Добавлена команда version и исправлен сценарии BDD
bia-tech Feb 13, 2017
6a39db4
Скорректировано представление версии до оригинального варианта
bia-tech Feb 13, 2017
55f4b9a
Переименован параметр метода СгенерироватьФайлAUTHORS
bia-tech Feb 13, 2017
70382fc
Возможность отправлять на удаленный сервер через n-коммитов при коман…
khorevaa Feb 13, 2017
05605b8
Merge pull request #4 from Khorevaa/feature/ref
theshadowco Feb 13, 2017
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
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"version": "0.1.0",
"windows": {
"command": "cmd",
"args": ["/c"]
"args": ["/c", "chcp 65001 >nul &"]
},
"linux": {
"command": "sh",
Expand Down
2 changes: 1 addition & 1 deletion features/version.feature
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
Когда очищаю параметры гитсинк в контексте

Сценарий: Получение версии продукта
Когда я выполняю команду gitsync "-version"
Когда я выполняю команду gitsync "version"
Тогда в лог-файле запуска продукта есть строка "."

2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

Описание.Имя("gitsync")
.Версия("1.2.1")
.Версия(ПараметрыСистемы.ВерсияПродукта())
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nixel2007, @khorevaa - ну вот, а вы говорите, json, yaml... Скрипты рулят.

.ВерсияСреды("1.0.15")
.ЗависитОт("logos")
.ЗависитОт("cmdline")
Expand Down
84 changes: 84 additions & 0 deletions src/core/Классы/КомандаAll.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
///////////////////////////////////////////////////////////////////
//
// Служебный модуль с реализацией работы команды all
//
// Представляет собой модификацию приложения gitsync от
// команды oscript-library
//
// Структура модуля реализована в соответствии с рекомендациями
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////

Перем ДопПараметры;

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Запускает синхронизацию по нескольким репозиториям");

Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьКНастройкам", "Путь к файлу настроек синхронизатора.");

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-log", "<Путь к файлу лога>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-timer", "<Интервал срабатывания>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-force", "<on|off> принудительная синхронизация");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-debug", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-verbose", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-tempdir", "<Путь к каталогу временных файлов>");

Парсер.ДобавитьКоманду(ОписаниеКоманды);

КонецПроцедуры // ЗарегистрироватьКоманду

Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры) Экспорт

ДопПараметры = ДополнительныеПараметры;

ИмяФайлаНастроек = ПараметрыКоманды["ПутьКНастройкам"];
Если ИмяФайлаНастроек = Неопределено Тогда

МенеджерКомандПриложения.ПоказатьСправкуПоКомандам("all");
Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;

КонецЕсли;

КаталогRoot = ОбъединитьПути(ТекущийСценарий().Каталог, "..\..\");

Если ПараметрыКоманды["-log"] <> Неопределено Тогда

Аппендер = Новый ВыводЛогаВФайл();
Аппендер.ОткрытьФайл(ПараметрыКоманды["-log"]);
ДополнительныеПараметры.Лог.ДобавитьСпособВывода(Аппендер);
Раскладка = ЗагрузитьСценарий(ОбъединитьПути(КаталогRoot, "log-layout.os"));
ДополнительныеПараметры.Лог.УстановитьРаскладку(Раскладка);

КонецЕсли;

Интервал = 0;
Если ПараметрыКоманды["-timer"] <> Неопределено Тогда

Интервал = Число(ПараметрыКоманды["-timer"]);

КонецЕсли;

Контроллер = ЗагрузитьСценарий(ОбъединитьПути(КаталогRoot, "multi-controller.os"));

Пока Истина Цикл

Контроллер.ВыполнитьСинхронизациюПоФайлуНастроек(ЭтотОбъект, ИмяФайлаНастроек, ПараметрыКоманды["-force"] = Истина);

Если Интервал <= 0 Тогда

Прервать;

Иначе

ДополнительныеПараметры.Лог.Информация("Ожидаем " + Интервал + " секунд перед новым циклом");
Приостановить(Интервал * 1000);

КонецЕсли;

КонецЦикла;

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;

КонецФункции // ВыполнитьКоманду
54 changes: 54 additions & 0 deletions src/core/Классы/КомандаClone.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
///////////////////////////////////////////////////////////////////
//
// Служебный модуль с реализацией работы команды clone
//
// Представляет собой модификацию приложения gitsync от
// команды oscript-library
//
// Структура модуля реализована в соответствии с рекомендациями
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Клонирует существующий репозиторий и создает служебные файлы");

Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьКХранилищу", "Файловый путь к каталогу хранилища конфигурации 1С.");
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "URLРепозитория", "Адрес удаленного репозитория GIT.");
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ЛокальныйКаталогГит", "Каталог исходников внутри локальной копии git-репозитария.");

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-email", "<домен почты для пользователей git>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-debug", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-verbose", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-tempdir", "<Путь к каталогу временных файлов>");

Парсер.ДобавитьКоманду(ОписаниеКоманды);

КонецПроцедуры // ЗарегистрироватьКоманду

Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры) Экспорт

Распаковщик = РаспаковщикКонфигурации.ПолучитьИНастроитьРаспаковщик(ПараметрыКоманды, ДополнительныеПараметры);
КаталогРабочейКопии = РаспаковщикКонфигурации.ПодготовитьКаталогНовойРабочейКопии(ПараметрыКоманды["ЛокальныйКаталогГит"]);

URL = ПараметрыКоманды["URLРепозитория"];
Если ПустаяСтрока(URL) Тогда

ВызватьИсключение "Не указан URL репозитария";

КонецЕсли;

СоздатьКаталог(КаталогРабочейКопии);
Результат = Распаковщик.КлонироватьРепозитарий(КаталогРабочейКопии, URL);
Если Результат <> 0 Тогда

ВызватьИсключение "git clone вернул код <" + Результат + ">";

КонецЕсли;

РаспаковщикКонфигурации.НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, ПараметрыКоманды["ПутьКХранилищу"]);

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;

КонецФункции // ВыполнитьКоманду
85 changes: 85 additions & 0 deletions src/core/Классы/КомандаExport.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
///////////////////////////////////////////////////////////////////
//
// Служебный модуль с реализацией работы команды export
//
// Представляет собой модификацию приложения gitsync от
// команды oscript-library
//
// Структура модуля реализована в соответствии с рекомендациями
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить локальную синхронизацию, без pull/push");

Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьКХранилищу", "Файловый путь к каталогу хранилища конфигурации 1С.");
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ЛокальныйКаталогГит", "Каталог исходников внутри локальной копии git-репозитария.");

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-email", "<домен почты для пользователей git>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "<Маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-debug", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-verbose", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-format", "<hierarchical|plain>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-minversion", "<номер минимальной версии для выгрузки>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-maxversion", "<номер максимальной версии для выгрузки>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-limit", "<выгрузить неболее limit версий от текущей выгруженной>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-tempdir", "<Путь к каталогу временных файлов>");

Парсер.ДобавитьКоманду(ОписаниеКоманды);

КонецПроцедуры // ЗарегистрироватьКоманду

Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры) Экспорт

ЛокальныйКаталогГит = ПараметрыКоманды["ЛокальныйКаталогГит"];
Формат = ПараметрыКоманды["-format"];
МинВерсия = ПараметрыКоманды["-minversion"];
МаксВерсия = ПараметрыКоманды["-maxversion"];
Лимит = ПараметрыКоманды["-limit"];

Если ЛокальныйКаталогГит = Неопределено Тогда

ЛокальныйКаталогГит = ТекущийКаталог();

КонецЕсли;

Если Формат = Неопределено Тогда

Формат = РежимВыгрузкиФайлов.Авто;

КонецЕсли;

Если МинВерсия = Неопределено Тогда

МинВерсия = 0;

КонецЕсли;

Если МаксВерсия = Неопределено Тогда

МаксВерсия = 0;

КонецЕсли;

Если Лимит = Неопределено Тогда

Лимит = 0;

КонецЕсли;

МаксВерсия = Число(МаксВерсия);
МинВерсия = Число(МинВерсия);
Лимит = Число(Лимит);

Распаковщик = РаспаковщикКонфигурации.ПолучитьИНастроитьРаспаковщик(ПараметрыКоманды, ДополнительныеПараметры);
Распаковщик.ВерсияПлатформы = ПараметрыКоманды["-v8version"];
Распаковщик.ДоменПочтыДляGitПоУмолчанию = ПараметрыКоманды["-email"];
ДополнительныеПараметры.Лог.Информация("Начинаю выгрузку исходников");
РаспаковщикКонфигурации.ВыполнитьЭкспортИсходников(Распаковщик, ПараметрыКоманды["ПутьКХранилищу"], ЛокальныйКаталогГит, МинВерсия, МаксВерсия, Формат,,, Лимит);
ДополнительныеПараметры.Лог.Информация("Выгрузка завершена");

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;

КонецФункции // ВыполнитьКоманду
53 changes: 53 additions & 0 deletions src/core/Классы/КомандаInit.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
///////////////////////////////////////////////////////////////////
//
// Служебный модуль с реализацией работы команды init
//
// Представляет собой модификацию приложения gitsync от
// команды oscript-library
//
// Структура модуля реализована в соответствии с рекомендациями
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////

Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт

ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Создает новый репозиторий и создает служебные файлы");

Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьКХранилищу", "Файловый путь к каталогу хранилища конфигурации 1С.");
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ЛокальныйКаталогГит", "Адрес локального репозитория GIT или каталог исходников внутри локальной копии git-репозитария.");

Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-email", "<домен почты для пользователей git>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-debug", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-verbose", "<on|off>");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-tempdir", "<Путь к каталогу временных файлов>");

Парсер.ДобавитьКоманду(ОписаниеКоманды);

КонецПроцедуры // ЗарегистрироватьКоманду

Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры) Экспорт

Распаковщик = РаспаковщикКонфигурации.ПолучитьИНастроитьРаспаковщик(ПараметрыКоманды, ДополнительныеПараметры);
КаталогРабочейКопии = РаспаковщикКонфигурации.ПодготовитьКаталогНовойРабочейКопии(ПараметрыКоманды["ЛокальныйКаталогГит"]);

// инициализировать с нуля
СоздатьКаталог(КаталогРабочейКопии);
ЭтоКаталогГит = Распаковщик.ПроверитьНаличиеРепозитарияГит(КаталогРабочейКопии);
Если Не ЭтоКаталогГит Тогда

Результат = Распаковщик.ИнициализироватьРепозитарий(КаталогРабочейКопии);
Если Результат <> 0 Тогда

ВызватьИсключение "git init вернул код <" + Результат + ">";

КонецЕсли;

КонецЕсли;

РаспаковщикКонфигурации.НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, ПараметрыКоманды["ПутьКХранилищу"]);

Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;

КонецФункции // ВыполнитьКоманду

Loading