-
Notifications
You must be signed in to change notification settings - Fork 93
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
Feature/ref #37
Changes from 20 commits
8edcfe8
d86c256
6e250bc
87853fe
ee55c71
fb9e14d
90d49f5
457bc83
da9fb62
8105108
07662ac
1299726
c7e0f8f
75a85e4
4483a87
65a14a3
e56f8ea
da4416a
a9baabf
d09b5a3
2498815
8e3e129
3ccdfa1
36c9147
2d9e036
6a39db4
55f4b9a
70382fc
05605b8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
|
|
||
| Описание.Имя("gitsync") | ||
| .Версия("1.2.1") | ||
| .Версия(ПараметрыСистемы.ВерсияПродукта()) | ||
| .ВерсияСреды("1.0.15") | ||
| .ЗависитОт("logos") | ||
| .ЗависитОт("cmdline") | ||
|
|
@@ -14,4 +14,4 @@ | |
| .ВключитьФайл("bin") | ||
| .ВключитьФайл("config-example.xml") | ||
| .ВключитьФайл("readme.md") | ||
| .ИсполняемыйФайл("src/gitsync.os"); | ||
| .ИсполняемыйФайл("src/gitsync.os", "gitsync"); | ||
|
||
| 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); | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| КонецЦикла; | ||
|
|
||
| Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; | ||
|
|
||
| КонецФункции // ВыполнитьКоманду | ||
|
|
||
| Функция ТребуетсяСинхронизироватьХранилище(Знач ФайлХранилища, Знач ЛокальныйКаталогГит) Экспорт | ||
|
||
|
|
||
| Распаковщик = РаспаковщикКонфигурации.ПолучитьРаспаковщик(ДопПараметры); | ||
| Возврат Распаковщик.ТребуетсяСинхронизироватьХранилищеСГит(ФайлХранилища, ЛокальныйКаталогГит); | ||
|
|
||
| КонецФункции // ТребуетсяСинхронизироватьХранилище | ||
| 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 вернул код <" + Результат + ">"; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| РаспаковщикКонфигурации.НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, ПараметрыКоманды["ПутьКХранилищу"]); | ||
|
|
||
| Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; | ||
|
|
||
| КонецФункции // ВыполнитьКоманду |
| 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"]; | ||
| ДополнительныеПараметры.Лог.Информация("Начинаю выгрузку исходников"); | ||
| РаспаковщикКонфигурации.ВыполнитьЭкспортИсходников(Распаковщик, ПараметрыКоманды["ПутьКХранилищу"], ЛокальныйКаталогГит, МинВерсия, МаксВерсия, Формат,,, Лимит); | ||
| ДополнительныеПараметры.Лог.Информация("Выгрузка завершена"); | ||
|
|
||
| Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; | ||
|
|
||
| КонецФункции // ВыполнитьКоманду |
| 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 вернул код <" + Результат + ">"; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| РаспаковщикКонфигурации.НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, ПараметрыКоманды["ПутьКХранилищу"]); | ||
|
|
||
| Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех; | ||
|
|
||
| КонецФункции // ВыполнитьКоманду | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nixel2007, @khorevaa - ну вот, а вы говорите, json, yaml... Скрипты рулят.