Skip to content
Merged
Show file tree
Hide file tree
Changes from 20 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
4 changes: 2 additions & 2 deletions 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 All @@ -14,4 +14,4 @@
.ВключитьФайл("bin")
.ВключитьФайл("config-example.xml")
.ВключитьФайл("readme.md")
.ИсполняемыйФайл("src/gitsync.os");
.ИсполняемыйФайл("src/gitsync.os", "gitsync");
Copy link
Member

Choose a reason for hiding this comment

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

кажется это лишнее, оно и так возьмет имя стартового файла в качестве имени приложения.

91 changes: 91 additions & 0 deletions src/core/Классы/КомандаAll.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
///////////////////////////////////////////////////////////////////
//
// Служебный модуль с реализацией работы команды 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);

КонецЕсли;

КонецЦикла;

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

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

Функция ТребуетсяСинхронизироватьХранилище(Знач ФайлХранилища, Знач ЛокальныйКаталогГит) Экспорт
Copy link
Member

Choose a reason for hiding this comment

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

Зачем нужен метод ТребуетсяСинхронизироватьХранилище в этом классе.
Из кода не увидел, где идет вызов метода.

Предлагаю удалить, если нигде не юзается.

Copy link
Member

Choose a reason for hiding this comment

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

Прошу оставить мне нужен. )

Copy link
Member

Choose a reason for hiding this comment

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

Прошу оставить мне нужен. )

@khorevaa Не согласен.
Этот класс имеет конкретную функцию - выполнение одной команды.
Зачем его нагружать еще какой-то нагрузкой?

Если метод сильно нужен, предлагаю переместить в соответствующий модуль РаспаковщикКонфигурации.os


Распаковщик = РаспаковщикКонфигурации.ПолучитьРаспаковщик(ДопПараметры);
Возврат Распаковщик.ТребуетсяСинхронизироватьХранилищеСГит(ФайлХранилища, ЛокальныйКаталогГит);

КонецФункции // ТребуетсяСинхронизироватьХранилище
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