Skip to content

Commit

Permalink
Merge branch 'release/2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Feb 17, 2017
2 parents cdfa013 + 58df665 commit 81fabb4
Show file tree
Hide file tree
Showing 16 changed files with 1,027 additions and 683 deletions.
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"
Тогда в лог-файле запуска продукта есть строка "."

9 changes: 5 additions & 4 deletions packagedef
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@

Описание.Имя("gitsync")
.Версия("1.2.1")
.Версия(ПараметрыСистемы.ВерсияПродукта())
.ВерсияСреды("1.0.15")
.ЗависитОт("logos")
.ЗависитОт("cmdline")
.ЗависитОт("tempfiles")
.ЗависитОт("tool1cd")
.ЗависитОт("v8runner")
.ЗависитОт("tool1cd", "0.3")
.ЗависитОт("v8runner", "0.7")
.ЗависитОт("strings")
.ЗависитОт("1commands")
.ЗависитОт("1commands", "1.0")
.ВключитьФайл("src")
.ВключитьФайл("tests")
.ВключитьФайл("features")
.ВключитьФайл("bin")
.ВключитьФайл("config-example.xml")
.ВключитьФайл("readme.md")
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"];
ДополнительныеПараметры.Лог.Информация("Начинаю выгрузку исходников");
РаспаковщикКонфигурации.ВыполнитьЭкспортИсходников(Распаковщик, ПараметрыКоманды["ПутьКХранилищу"], ЛокальныйКаталогГит, МинВерсия, МаксВерсия, Формат,,, Лимит);
ДополнительныеПараметры.Лог.Информация("Выгрузка завершена");

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

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

0 comments on commit 81fabb4

Please sign in to comment.