From bf4ae566c5e11940b7853ba3427c624696da4100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Mon, 16 Nov 2015 14:04:43 +0300 Subject: [PATCH 01/60] =?UTF-8?q?=D0=9F=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BA=D1=80=D0=B8?= =?UTF-8?q?=D0=BF=D1=82=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20lin?= =?UTF-8?q?ux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 21 +- src/gitsync/src/multi-controller.os | 21 +- src/gitsync/src/unpack.os | 82 +++-- ...20\244\320\260\320\271\320\273\321\213.os" | 7 +- src/tool1cd/config-storage.os | 7 + src/tool1cd/table-reader.os | 8 +- src/v8runner/src/v8runner.os | 293 ++++++++++-------- 7 files changed, 275 insertions(+), 164 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 6d6e594..5433a2e 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -6,6 +6,8 @@ #Использовать logos Перем Лог; +Перем ЭтоWindows; + /////////////////////////////////////////////////////////////////// // Прикладные процедуры и функции @@ -270,7 +272,7 @@ Функция ПолучитьПутьКБазеДанныхХранилища(Знач ПутьКХранилищу) ФайлПутиКХранилищу = Новый Файл(ПутьКХранилищу); Если ФайлПутиКХранилищу.Существует() и ФайлПутиКХранилищу.ЭтоКаталог() Тогда - ФайлБазыДанныхХранилища = ФайлПутиКХранилищу.ПолноеИмя + "\1cv8ddb.1CD"; + ФайлБазыДанныхХранилища = ДополнитьСлешВПуть(ФайлПутиКХранилищу.ПолноеИмя) + "1cv8ddb.1CD"; ИначеЕсли ФайлПутиКХранилищу.Существует() Тогда ФайлБазыДанныхХранилища = ФайлПутиКХранилищу.ПолноеИмя; Иначе @@ -409,9 +411,26 @@ КонецПроцедуры +Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт + разделитель = "\"; + + Если НЕ ЭтоWindows Тогда + разделитель = "/"; + КонецЕсли; + + Если Прав(Каталог, 1) <> разделитель Тогда + Каталог = Каталог + разделитель; + КонецЕсли; + Возврат Каталог; +КонецФункции + + /////////////////////////////////////////////////////////////////// // Точка входа в приложение +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); Попытка diff --git a/src/gitsync/src/multi-controller.os b/src/gitsync/src/multi-controller.os index 5840ded..4a5c600 100644 --- a/src/gitsync/src/multi-controller.os +++ b/src/gitsync/src/multi-controller.os @@ -5,6 +5,8 @@ // //////////////////////////////////////////////////////////////////////////// +#Использовать cmdline + Перем мКонтроллер; Перем мНастройки; Перем Лог; @@ -40,8 +42,25 @@ //////////////////////////////////////////////////////////////////////// // Вспомогательные методы +Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + + разделитель = "\"; + + Если НЕ ЭтоWindows Тогда + разделитель = "/"; + КонецЕсли; + + Если Прав(Каталог, 1) <> разделитель Тогда + Каталог = Каталог + разделитель; + КонецЕсли; + Возврат Каталог; +КонецФункции + + Функция ИмяФайлаБазыХранилища(Знач Каталог) - Возврат Каталог + "\1cv8ddb.1CD"; + Возврат ДополнитьСлешВПуть(Каталог) + "1cv8ddb.1CD"; КонецФункции Функция НеобходимоСинхронизироватьХранилище(Знач Репо) diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 781ce5e..8d0da57 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -16,6 +16,7 @@ Перем Лог; Перем мФайлПрограммыРаспаковки; Перем мАвторизацияВХранилищеСредствами1С; +Перем ЭтоWindows; /////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -125,7 +126,8 @@ //ЗарегистрироватьВременныйФайл(КаталогИерархическойСтруктурыМодулей); TODO выяснить почему временный? КонецЕсли; - ЗавершитьПроцесс_TGitCache_exe(); + ЗавершитьПроцесс_TGitCache_exe(); + ОчиститьЦелевойКаталогВыгрузки(КаталогИерархическойВыгрузки); Переименования = Новый ТаблицаЗначений; @@ -159,7 +161,7 @@ КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); Если Прав(Файл.ПолноеИмя, 5) = ".Form" Тогда - КаталогФормы = НовыйКаталог.ПолноеИмя+"\"+НовыйФайл.ИмяБезРасширения; + КаталогФормы = ДополнитьСлешВПуть(НовыйКаталог.ПолноеИмя)+НовыйФайл.ИмяБезРасширения; СоздатьКаталог(КаталогФормы); РаспаковатьКонтейнерМетаданных(НовыйФайл.ПолноеИмя, КаталогФормы) КонецЕсли; @@ -216,7 +218,8 @@ Если Прав(Файл.Имя, 5) = "files" Тогда // файлы справки. МассивФайлов = НайтиФайлы(Файл.ПолноеИмя, ПолучитьМаскуВсеФайлы()); ИмяНовогоФайла = Лев(Файл.Имя, СтрДлина(Файл.Имя)-6); - ИмяНовогоФайла = СтрЗаменить(ИмяНовогоФайла, ".", "\")+".del"; + Разделитель = ?(ЭтоWindows, "\", "/"); + ИмяНовогоФайла = СтрЗаменить(ИмяНовогоФайла, ".", Разделитель)+".del"; НовыйФайл = Новый Файл(ОбъединитьПути(КаталогИерархическойСтруктурыМодулей, ИмяНовогоФайла)); НовыйКаталог = Новый Файл(НовыйФайл.Путь); Если НЕ НовыйКаталог.Существует() Тогда @@ -286,10 +289,10 @@ Иначе Разрядность = СтрДлина(Строка(ДлинаИменни)); НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-1)+"~"+ДлинаИменни; - НовыйПутьПроверки = Новый Файл(КаталогИерархическойСтруктурыМодулей+"\"+ИмяФайла+НовоеИмя); + НовыйПутьПроверки = Новый Файл(ДополнитьСлешВПуть(КаталогИерархическойСтруктурыМодулей)+ИмяФайла+НовоеИмя); Если НовыйПутьПроверки.Существует() Тогда СчетчикНовогоИмени = 0; - МассивФайловСущуствующих = НайтиФайлы(КаталогИерархическойСтруктурыМодулей+"\"+ИмяФайла, Лев(ЭлементМассива, 58-Разрядность-3)+"*"); + МассивФайловСущуствующих = НайтиФайлы(ДополнитьСлешВПуть(КаталогИерархическойСтруктурыМодулей)+ИмяФайла, Лев(ЭлементМассива, 58-Разрядность-3)+"*"); СчетчикНовогоИмени = МассивФайловСущуствующих.Количество()+1; НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-3)+"~"+ДлинаИменни+ФорматДвузначноеЧисло(Строка(СчетчикНовогоИмени)); КонецЕсли; @@ -412,7 +415,7 @@ Результат = ВыполнитьКомандныйФайл(КомандныйФайл); ВывестиТекстФайла(ИмяФайлаЛогаКоммита); - ЗавершитьПроцесс_TGitCache_exe(); + ЗавершитьПроцесс_TGitCache_exe(); Возврат Результат; @@ -998,18 +1001,21 @@ Функция ФайлПрограммыРаспаковки() Если мФайлПрограммыРаспаковки = Неопределено Тогда - КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\bin"); - ФайлПрограммы = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "UnpackV8.exe")); - Если Не ФайлПрограммы.Существует() Тогда - ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружен файл программы распаковки: <%1>", ФайлПрограммы.ПолноеИмя); - КонецЕсли; - - ФайлZLib = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "zlib1.dll")); - Если Не ФайлZLib.Существует() Тогда - ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружена библиотека zlib1: <%1>", ФайлZLib.ПолноеИмя); - КонецЕсли; - - мФайлПрограммыРаспаковки = ФайлПрограммы.ПолноеИмя; + Если ЭтоWindows = Истина Тогда + КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\bin"); + ФайлПрограммы = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "UnpackV8.exe")); + Если Не ФайлПрограммы.Существует() Тогда + ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружен файл программы распаковки: <%1>", ФайлПрограммы.ПолноеИмя); + КонецЕсли; + + ФайлZLib = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "zlib1.dll")); + Если Не ФайлZLib.Существует() Тогда + ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружена библиотека zlib1: <%1>", ФайлZLib.ПолноеИмя); + КонецЕсли; + мФайлПрограммыРаспаковки = ФайлПрограммы.ПолноеИмя; + Иначе + мФайлПрограммыРаспаковки = "v8unpack"; //установка происходит из репозитариев, поэтому уже в переменной path + КонецЕсли; КонецЕсли; @@ -1167,17 +1173,22 @@ Функция ЗапуститьПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, Знач ТекущийКаталог = "\.") рез = -1; - + Если НЕ ЭтоWindows И ТекущийКаталог = "\." Тогда + ТекущийКаталог = "./"; + КонецЕсли; + Попытка КодВозврата = ""; ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); рез = КодВозврата; Исключение // Для x64 ОС - СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска; - КодВозврата = ""; - ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); - рез = КодВозврата; + Если ЭтоWindows Тогда + СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска; + КодВозврата = ""; + ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); + рез = КодВозврата; + КонецЕсли; КонецПопытки; Возврат рез; @@ -1185,10 +1196,12 @@ КонецФункции // ЗапуститьПриложениеИДождатьсяЗавершения() Процедура ЗавершитьПроцесс_TGitCache_exe() - СтрокаКоманды = "taskkill /im TGitCache.exe /T /F"; - Лог.Отладка("ЗавершитьПроцесс_TGitCache_exe: команда "+ СтрокаКоманды); + Если ЭтоWindows Тогда + СтрокаКоманды = "taskkill /im TGitCache.exe /T /F"; + Лог.Отладка("ЗавершитьПроцесс_TGitCache_exe: команда "+ СтрокаКоманды); - ЗапуститьПриложениеИДождатьсяЗавершения(СтрокаКоманды); + ЗапуститьПриложениеИДождатьсяЗавершения(СтрокаКоманды); + КонецЕсли; КонецПроцедуры Функция ФорматДвузначноеЧисло(ЗначениеЧисло) @@ -1204,8 +1217,25 @@ Возврат ?(ДоменПочтыДляGitПоУмолчанию = Неопределено, "localhost", ДоменПочтыДляGitПоУмолчанию); КонецФункции +Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт + разделитель = "\"; + + Если НЕ ЭтоWindows Тогда + разделитель = "/"; + КонецЕсли; + + Если Прав(Каталог, 1) <> разделитель Тогда + Каталог = Каталог + разделитель; + КонецЕсли; + Возврат Каталог; +КонецФункции + + ////////////////////////////////////////////////////////////////////////////////////////////// +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); ДоменПочтыДляGitПоУмолчанию = "localhost"; ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "cmd-builder.os"), "КомандныйФайл"); + diff --git "a/src/tempfiles/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.os" "b/src/tempfiles/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.os" index 7d0de8f..b2bea15 100644 --- "a/src/tempfiles/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.os" +++ "b/src/tempfiles/\320\222\321\200\320\265\320\274\320\265\320\275\320\275\321\213\320\265\320\244\320\260\320\271\320\273\321\213.os" @@ -8,6 +8,7 @@ Перем мВременныеФайлы; Перем Лог; +Перем ЭтоWindows; ///////////////////////////////////////////////////////////////////////// // Программный интерфейс @@ -24,7 +25,8 @@ Функция СоздатьФайл(Знач Расширение = "tmp") Экспорт ИмяФайла = НовоеИмяФайла(Расширение); - ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI); + Кодировка = ?(ЭтоWindows, КодировкаТекста.ANSI, "utf-8"); + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, Кодировка); ЗаписьТекста.Закрыть(); Возврат ИмяФайла; @@ -83,5 +85,8 @@ КонецФункции +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + мВременныеФайлы = Новый Массив; Лог = Логирование.ПолучитьЛог("oscript.app.tempfiles"); \ No newline at end of file diff --git a/src/tool1cd/config-storage.os b/src/tool1cd/config-storage.os index 763f09c..5bd20c6 100644 --- a/src/tool1cd/config-storage.os +++ b/src/tool1cd/config-storage.os @@ -3,6 +3,7 @@ Перем мКаталогВнешнихПрограмм; Перем Лог; +Перем ЭтоWindows; ////////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -21,6 +22,9 @@ ФайлЛога = Новый Файл(ЛогTool1CD); КодВозврата = ""; + Если НЕ ЭтоWindows Тогда + СтрокаЗапуска = "wine '"+СтрокаЗапуска+"'"; + КонецЕсли; Лог.Отладка(СтрокаЗапуска); ЗапуститьПриложение(СтрокаЗапуска, "", Истина, КодВозврата); Если ФайлЛога.Существует() Тогда @@ -57,4 +61,7 @@ Возврат Текст; КонецФункции +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + Лог = Логирование.ПолучитьЛог("oscript.lib.tool1cd"); diff --git a/src/tool1cd/table-reader.os b/src/tool1cd/table-reader.os index 8ba434d..cc30800 100644 --- a/src/tool1cd/table-reader.os +++ b/src/tool1cd/table-reader.os @@ -4,6 +4,7 @@ Перем мКаталогВнешнихПрограмм; Перем мРабочийКаталог; Перем Лог; +Перем ЭтоWindows; Процедура ОткрытьФайл(Знач ИмяФайла) Экспорт мИмяФайлаБазы = ИмяФайла; @@ -33,7 +34,9 @@ + РабочийКаталог() + " " + ИменаТаблиц; КодВозврата = ""; - + Если НЕ ЭтоWindows Тогда + СтрокаЗапуска = "wine '"+СтрокаЗапуска+"'"; + КонецЕсли; Лог.Отладка(СтрокаЗапуска); ЗапуститьПриложение(СтрокаЗапуска, "", Истина, КодВозврата); @@ -208,4 +211,7 @@ КонецФункции +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + Лог = Логирование.ПолучитьЛог("oscript.lib.tool1cd"); \ No newline at end of file diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index a18ef28..3371e08 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -10,17 +10,32 @@ Перем мКаталогСборки; Перем мВыводКоманды; Перем мПутьКПлатформе1С; +Перем ЭтоWindows Экспорт; Перем Лог; ////////////////////////////////////////////////////////////////////////////////// // Программный интерфейс +Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт + разделитель = "\"; + + Если НЕ ЭтоWindows Тогда + разделитель = "/"; + КонецЕсли; + + Если Прав(Каталог, 1) <> разделитель Тогда + Каталог = Каталог + разделитель; + КонецЕсли; + Возврат Каталог; +КонецФункции + + Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения; мКонтекстКоманды.ИмяПользователя = Пользователь; мКонтекстКоманды.Пароль = Пароль; - + ПоказатьКонтекстВРежимеОтладки(); КонецПроцедуры @@ -41,57 +56,57 @@ КонецПроцедуры Функция ПолучитьВерсиюИзХранилища(Знач СтрокаСоединения, Знач ПользовательХранилища, Знач ПарольХранилища, Знач НомерВерсии = Неопределено) Экспорт - + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - + Параметры.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); Параметры.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - + Если Не ПустаяСтрока(ПарольХранилища) Тогда Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); КонецЕсли; - - ФайлРезультата = КаталогСборки()+"\source.cf"; - + + ФайлРезультата = ДополнитьСлешВПуть(КаталогСборки())+"source.cf"; + Параметры.Добавить("/ConfigurationRepositoryDumpCfg """+ФайлРезультата + """"); - + Если Не ПустаяСтрока(НомерВерсии) Тогда Параметры.Добавить("-v "+НомерВерсии); КонецЕсли; - + ВыполнитьКоманду(Параметры); - + Возврат ФайлРезультата; - + КонецФункции Процедура ОтключитьсяОтХранилища() Экспорт Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); Параметры.Добавить("/ConfigurationRepositoryUnbindCfg -force "); - + ВыполнитьКоманду(Параметры); КонецПроцедуры Процедура ЗагрузитьКонфигурациюИзФайла(Знач ФайлКонфигурации, Знач ОбновитьКонфигурациюИБ = Ложь) Экспорт - + // Выполняем загрузку и обновление за два шага, т.к. // иногда обновление конфигурации ИБ на новой базе проходит неудачно, // если запустить две операции в одной команде. - + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); Параметры.Добавить("/LoadCfg """ + ФайлКонфигурации + """"); ВыполнитьКоманду(Параметры); - + Если ОбновитьКонфигурациюИБ Тогда Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); Параметры.Добавить("/UpdateDBCfg -Server"); ВыполнитьКоманду(Параметры); КонецЕсли; - + КонецПроцедуры Процедура ОбновитьКонфигурациюБазыДанных(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина) Экспорт - + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); Если ПредупрежденияКакОшибки Тогда @@ -100,66 +115,66 @@ Если НаСервере Тогда ПараметрыСвязиСБазой.Добавить("-Server"); КонецЕсли; - + ВыполнитьКоманду(ПараметрыСвязиСБазой); - + КонецПроцедуры Процедура ОбновитьКонфигурацию(Знач КаталогВерсии, Знач ИспользоватьПолныйДистрибутив = Ложь) Экспорт - + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - + Если ИспользоватьПолныйДистрибутив = Неопределено Тогда ИспользоватьПолныйДистрибутив = Не КаталогСодержитФайлОбновления(КаталогВерсии); КонецЕсли; - + Если ИспользоватьПолныйДистрибутив Тогда ФайлОбновления = "1cv8.cf"; Иначе ФайлОбновления = "1cv8.cfu"; КонецЕсли; - - ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(КаталогВерсии + "\" + ФайлОбновления)); - + + ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(ДополнитьСлешВПуть(КаталогВерсии)+ ФайлОбновления)); + ВыполнитьКоманду(ПараметрыЗапуска); - + КонецПроцедуры Процедура СоздатьФайловуюБазу(Знач КаталогБазы) Экспорт Лог.Отладка("Создаю файловую базу "+КаталогБазы); - + ОбеспечитьКаталог(КаталогБазы); УдалитьФайлы(КаталогБазы, "*.*"); - + ПараметрыЗапуска = Новый Массив; ПараметрыЗапуска.Добавить("CREATEINFOBASE"); ПараметрыЗапуска.Добавить("File="""+КаталогБазы+""""); ПараметрыЗапуска.Добавить("/Out""" + ФайлИнформации() + """"); - + КодВозврата = ЗапуститьИПодождать(ПараметрыЗапуска); УстановитьВывод(ПрочитатьФайлИнформации()); Если КодВозврата <> 0 Тогда ВызватьИсключение ВыводКоманды(); КонецЕсли; - + КонецПроцедуры Процедура ЗагрузитьИнформационнуюБазу(ПутьВыгрузкиИБ) Экспорт ФайлВыгрузки = Новый Файл(ПутьВыгрузкиИБ); Ожидаем.Что(ФайлВыгрузки.Существует(), "Файл выгрузки <"+ПутьВыгрузкиИБ+"> существует, а это не так").ЭтоИстина(); - + ПараметрыЗапуска = СтандартныеПараметрыЗапускаКонфигуратора(); - + ПараметрыЗапуска.Добавить("/RestoreIB " + ОбернутьВКавычки(ПутьВыгрузкиИБ)); - + ВыполнитьКоманду(ПараметрыЗапуска); КонецПроцедуры Процедура ВыполнитьКоманду(Знач Параметры) Экспорт - + ПроверитьВозможностьВыполненияКоманды(); - + Файл = Новый Файл(ФайлИнформации()); Если Файл.Существует() Тогда Попытка @@ -169,7 +184,7 @@ Лог.Предупреждение("Не удалось удалить файл информации: " + ОписаниеОшибки()); КонецПопытки; КонецЕсли; - + КодВозврата = ЗапуститьИПодождать(Параметры); УстановитьВывод(ПрочитатьФайлИнформации()); Если КодВозврата <> 0 Тогда @@ -178,7 +193,7 @@ Иначе Лог.Отладка("Код возврата равен 0"); КонецЕсли; - + КонецПроцедуры Функция ПолучитьПараметрыЗапуска() Экспорт @@ -191,19 +206,19 @@ Знач Сервер = Истина, Знач ВнешнееСоединение = Истина, Знач ТолстыйКлиентОбычноеПриложение = Истина) Экспорт - + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); Параметры.Добавить("/CheckConfig"); - + ДобавитьФлагПроверки(Параметры, ТонкийКлиент, "-ThinClient"); ДобавитьФлагПроверки(Параметры, ВебКлиент, "-WebClient"); ДобавитьФлагПроверки(Параметры, Сервер, "-Server"); ДобавитьФлагПроверки(Параметры, ВнешнееСоединение, "-ExternalConnection"); ДобавитьФлагПроверки(Параметры, ТолстыйКлиентОбычноеПриложение, "-ThickClientOrdinaryApplication"); - + ВыполнитьКоманду(Параметры); - + КонецПроцедуры Процедура ЗапуститьВРежимеПредприятия(Знач КлючЗапуска = "MIGRATE", Знач УправляемыйРежим = Неопределено, Знач ДополнительныеКлючи = Неопределено) Экспорт @@ -215,32 +230,32 @@ ИначеЕсли УправляемыйРежим = Ложь Тогда ПараметрыСвязиСБазой.Вставить(2, "/RunModeOrdinaryApplication"); КонецЕсли; - + Если ДополнительныеКлючи <> Неопределено Тогда ПараметрыСвязиСБазой.Добавить(ДополнительныеКлючи); КонецЕсли; - + ВыполнитьКоманду(ПараметрыСвязиСБазой); КонецПроцедуры Процедура ДобавитьФлагПроверки(Знач Параметры, Знач ФлагПроверки, Знач ИмяФлага) - + Если ФлагПроверки Тогда Параметры.Добавить(ИмяФлага); КонецЕсли; - + КонецПроцедуры Функция КаталогСодержитФайлОбновления(Знач КаталогВерсии) - - ФайлОбновления = Новый Файл(КаталогВерсии + "\1cv8.cfu"); + + ФайлОбновления = Новый Файл(ДополнитьСлешВПуть(КаталогВерсии) + "1cv8.cfu"); Возврат ФайлОбновления.Существует(); - + КонецФункции Функция ПутьКВременнойБазе() Экспорт - Возврат КаталогСборки() + "\v8r_TempDB"; + Возврат ДополнитьСлешВПуть(КаталогСборки()) + "v8r_TempDB"; КонецФункции ////////////////////////////////////////////////// @@ -250,65 +265,73 @@ Если Лев(ВерсияПлатформы, 2) <> "8." Тогда ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; - КонецЕсли; - - путьProgramFiles = "C:\Program Files (x86)\"; - файлProgramFiles = Новый Файл(путьProgramFiles); - Если Не файлProgramFiles.Существует() Тогда - путьProgramFiles = "C:\Program Files\"; + КонецЕсли; + + Если ЭтоWindows = Истина Тогда + путьProgramFiles = "C:\Program Files (x86)\"; файлProgramFiles = Новый Файл(путьProgramFiles); Если Не файлProgramFiles.Существует() Тогда - ВызватьИсключение "Должен существовать путь к Program Files или Program Files (86)"; + путьProgramFiles = "C:\Program Files\"; + файлProgramFiles = Новый Файл(путьProgramFiles); + Если Не файлProgramFiles.Существует() Тогда + ВызватьИсключение "Должен существовать путь к Program Files или Program Files (86)"; + КонецЕсли; + КонецЕсли; - - КонецЕсли; - - СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, "."); - Если СписокСтрок.Количество() < 2 Тогда - ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]"; - КонецЕсли; - - МажорнаяВерсия = СписокСтрок[0]; - МинорнаяВерсия = СписокСтрок[1]; - - Если МинорнаяВерсия = "3" Тогда // 8.3 - путьКПлатформе = путьProgramFiles + "1cv8\"; - ИначеЕсли МинорнаяВерсия = "2" Тогда // 8.2 - путьКПлатформе = путьProgramFiles + "1cv82\"; - ИначеЕсли МинорнаяВерсия = "1" Тогда // 8.1 - путьКПлатформе = путьProgramFiles + "1cv81\"; - Иначе - ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; - КонецЕсли; - - МассивФайлов = НайтиФайлы(путьКПлатформе, версияПлатформы+"*"); - Если МассивФайлов.Количество() = 0 Тогда - ВызватьИсключение "Не найден путь к платформе 1С <"+версияПлатформы+">"; - КонецЕсли; - - ИменаВерсий = Новый Массив; - Для Каждого ЭлементМассива Из МассивФайлов Цикл - правыйСимвол = Прав(ЭлементМассива.Имя,1); - Если правыйСимвол < "0" или правыйСимвол > "9" Тогда - Продолжить; + + СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, "."); + Если СписокСтрок.Количество() < 2 Тогда + ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]"; КонецЕсли; - ИменаВерсий.Добавить(ЭлементМассива.Имя); - КонецЦикла; - - МаксВерсия = ИменаВерсий[0]; - Для Сч = 1 По ИменаВерсий.Количество()-1 Цикл - Если МаксВерсия < ИменаВерсий[Сч] Тогда - МаксВерсия = ИменаВерсий[Сч]; + + МажорнаяВерсия = СписокСтрок[0]; + МинорнаяВерсия = СписокСтрок[1]; + + Если МинорнаяВерсия = "3" Тогда // 8.3 + путьКПлатформе = путьProgramFiles + "1cv8\"; + ИначеЕсли МинорнаяВерсия = "2" Тогда // 8.2 + путьКПлатформе = путьProgramFiles + "1cv82\"; + ИначеЕсли МинорнаяВерсия = "1" Тогда // 8.1 + путьКПлатформе = путьProgramFiles + "1cv81\"; + Иначе + ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; КонецЕсли; - КонецЦикла; - - НужныйПуть = Новый Файл(путьКПлатформе + МаксВерсия + "\bin\1cv8.exe"); + + МассивФайлов = НайтиФайлы(путьКПлатформе, версияПлатформы+"*"); + Если МассивФайлов.Количество() = 0 Тогда + ВызватьИсключение "Не найден путь к платформе 1С <"+версияПлатформы+">"; + КонецЕсли; + + ИменаВерсий = Новый Массив; + Для Каждого ЭлементМассива Из МассивФайлов Цикл + правыйСимвол = Прав(ЭлементМассива.Имя,1); + Если правыйСимвол < "0" или правыйСимвол > "9" Тогда + Продолжить; + КонецЕсли; + ИменаВерсий.Добавить(ЭлементМассива.Имя); + КонецЦикла; + + МаксВерсия = ИменаВерсий[0]; + Для Сч = 1 По ИменаВерсий.Количество()-1 Цикл + Если МаксВерсия < ИменаВерсий[Сч] Тогда + МаксВерсия = ИменаВерсий[Сч]; + КонецЕсли; + КонецЦикла; + + НужныйПуть = Новый Файл(путьКПлатформе + МаксВерсия + "\bin\1cv8.exe"); + Иначе + КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); + Если КаталогУстановки.Существует() Тогда + КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); + КонецЕсли; + НужныйПуть = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); + КонецЕсли; Если Не НужныйПуть.Существует() Тогда ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйПуть.ПолноеИмя+"> не существует"; КонецЕсли; - + Возврат НужныйПуть.ПолноеИмя; - + КонецФункции Процедура УстановитьКлючРазрешенияЗапуска(Знач Ключ) Экспорт @@ -320,11 +343,11 @@ КонецФункции Функция КаталогСборки(Знач Каталог = "") Экспорт - + Если мКаталогСборки = Неопределено Тогда мКаталогСборки = ТекущийКаталог(); КонецЕсли; - + Если Каталог = "" Тогда Возврат мКаталогСборки; Иначе @@ -332,7 +355,7 @@ мКаталогСборки = Каталог; Возврат ТекКаталог; КонецЕсли; - + КонецФункции Функция ПутьКПлатформе1С(Знач Путь = "") Экспорт @@ -358,19 +381,19 @@ ПутьКПлатформе1С = ПутьКПлатформе1С(); Сообщить("ПутьКТонкомуКлиенту1С: вычислили Путь платформы 1С <"+ПутьКПлатформе1С+">"); КонецЕсли; - + ФайлПриложения = Новый Файл(ПутьКПлатформе1С); Каталог = ФайлПриложения.Путь; - ФайлПриложения = Новый Файл(Каталог + "\1cv8c.exe"); + ФайлПриложения = Новый Файл(ДополнитьСлешВПуть(Каталог) + "1cv8c.exe"); Если Не ФайлПриложения.Существует() Тогда ВызватьИсключение "Не установлен тонкий клиент"; КонецЕсли; - + Сообщить("ПутьКТонкомуКлиенту1С: получили путь к тонкому клиенту 1С <"+ФайлПриложения.ПолноеИмя+">"); Возврат ФайлПриложения.ПолноеИмя; КонецФункции - + Процедура УдалитьВременнуюБазу() Экспорт Если ВременнаяБазаСуществует() Тогда @@ -378,21 +401,21 @@ Лог.Отладка("Удаляю временную базу: "+КаталогВременнойБазы); УдалитьФайлы(КаталогВременнойБазы); КонецЕсли; - + КонецПроцедуры ////////////////////////////////////////////////////////////////////////////////// // Служебные процедуры Функция СтандартныеПараметрыЗапускаКонфигуратора() - + Лог.Отладка("КлючСоединенияСБазой "+КлючСоединенияСБазой()); Лог.Отладка("ИмяПользователя <"+мКонтекстКоманды.ИмяПользователя+">"); ПараметрыЗапуска = Новый Массив; ПараметрыЗапуска.Добавить("DESIGNER"); ПараметрыЗапуска.Добавить(КлючСоединенияСБазой()); - + ПараметрыЗапуска.Добавить("/Out" + ОбернутьВКавычки(ФайлИнформации())); Если Не ПустаяСтрока(мКонтекстКоманды.ИмяПользователя) Тогда ПараметрыЗапуска.Добавить("/N" + ОбернутьВКавычки(мКонтекстКоманды.ИмяПользователя)); @@ -406,7 +429,7 @@ КонецЕсли; ПараметрыЗапуска.Добавить("/DisableStartupMessages"); ПараметрыЗапуска.Добавить("/DisableStartupDialogs"); - + Возврат ПараметрыЗапуска; КонецФункции @@ -416,12 +439,12 @@ Если Не ЗначениеЗаполнено(ПутьКПлатформе1С()) Тогда ВызватьИсключение "Не задан путь к платформе 1С"; КонецЕсли; - + Лог.Отладка("Проверяю равенство КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует()"); Лог.Отладка("КлючСоединенияСБазой() "+КлючСоединенияСБазой()); Лог.Отладка("КлючВременногоКонтекста() "+КлючВременногоКонтекста()); Лог.Отладка("ВременнаяБазаСуществует() "+ВременнаяБазаСуществует()); - + Если КлючСоединенияСБазой() = КлючВременногоКонтекста() и Не ВременнаяБазаСуществует() Тогда Лог.Отладка("Равенство выполняется."); СоздатьВременнуюБазу(); @@ -443,9 +466,9 @@ КаталогВременнойБазы = ПутьКВременнойБазе(); Лог.Отладка("Создаю временную базу. Путь "+КаталогВременнойБазы); - + СоздатьФайловуюБазу(КаталогВременнойБазы); - + КонецПроцедуры Функция ЗапуститьИПодождать(Знач Параметры) @@ -453,22 +476,22 @@ СтрокаЗапуска = ""; СтрокаДляЛога = ""; Для Каждого Параметр Из Параметры Цикл - + СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - + Если Лев(Параметр,2) <> "/P" и Лев(Параметр,25) <> "/ConfigurationRepositoryP" Тогда СтрокаДляЛога = СтрокаДляЛога + " " + Параметр; КонецЕсли; - + КонецЦикла; КодВозврата = 0; - + Приложение = ОбернутьВКавычки(ПутьКПлатформе1С()); Лог.Отладка(Приложение + СтрокаДляЛога); - + ЗапуститьПриложение(Приложение + СтрокаЗапуска, , Истина, КодВозврата); - + Возврат КодВозврата; КонецФункции @@ -486,11 +509,11 @@ Текст = "Информации об ошибке нет"; КонецЕсли; - Лог.Отладка("файл информации: + Лог.Отладка("файл информации: |"+Текст); Возврат Текст; - + КонецФункции Процедура УстановитьВывод(Знач Сообщение) @@ -498,7 +521,7 @@ КонецПроцедуры Функция ФайлИнформации() Экспорт - Возврат КаталогСборки() + "\log.txt"; + Возврат ДополнитьСлешВПуть(КаталогСборки()) + "log.txt"; КонецФункции Процедура ОбеспечитьКаталог(Знач Каталог) @@ -517,7 +540,7 @@ КонецФункции Функция ВременнаяБазаСуществует() Экспорт - ФайлБазы = Новый Файл(ПутьКВременнойБазе() + "\1cv8.1cd"); + ФайлБазы = Новый Файл(ДополнитьСлешВПуть(ПутьКВременнойБазе()) + "1cv8.1cd"); Возврат ФайлБазы.Существует(); КонецФункции @@ -525,10 +548,10 @@ МассивПодстрок = Новый Массив; ОстатокСтроки = ИсходнаяСтрока; - + Поз = -1; Пока Поз <> 0 Цикл - + Поз = Найти(ОстатокСтроки, Разделитель); Если Поз > 0 Тогда Подстрока = Лев(ОстатокСтроки, Поз-1); @@ -536,11 +559,11 @@ Иначе Подстрока = ОстатокСтроки; КонецЕсли; - + МассивПодстрок.Добавить(Подстрока); - + КонецЦикла; - + Возврат МассивПодстрок; КонецФункции @@ -554,30 +577,32 @@ КонецФункции Процедура Инициализация() + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; мКонтекстКоманды = Новый Структура; мКонтекстКоманды.Вставить("КлючСоединенияСБазой", ""); мКонтекстКоманды.Вставить("ИмяПользователя", ""); мКонтекстКоманды.Вставить("Пароль", ""); мКонтекстКоманды.Вставить("КлючРазрешенияЗапуска", ""); - + ПутьКПлатформе1С(ПолучитьПутьКВерсииПлатформы("8.3")); Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); КонецПроцедуры Функция СкопироватьСтруктуру(Знач Источник) - + Копия = Новый Структура; Для Каждого КлючИЗначение Из Источник Цикл Копия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); КонецЦикла; - + Возврат Копия; - + КонецФункции ////////////////////////////////////////////////////////////////////////////////////// // Инициализация -Инициализация(); \ No newline at end of file +Инициализация(); From 1ca2f160d02a957896f2645b5d0c512f65f0d749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Mon, 16 Nov 2015 14:21:46 +0300 Subject: [PATCH 02/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=B0=20=D0=9E=D0=B1=D1=8A=D0=B5=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=82=D1=8C=D0=9F=D1=83=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 21 +-------------------- src/gitsync/src/unpack.os | 20 +++----------------- src/v8runner/src/v8runner.os | 28 +++++++--------------------- 3 files changed, 11 insertions(+), 58 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 5433a2e..58b85a4 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -6,8 +6,6 @@ #Использовать logos Перем Лог; -Перем ЭтоWindows; - /////////////////////////////////////////////////////////////////// // Прикладные процедуры и функции @@ -272,7 +270,7 @@ Функция ПолучитьПутьКБазеДанныхХранилища(Знач ПутьКХранилищу) ФайлПутиКХранилищу = Новый Файл(ПутьКХранилищу); Если ФайлПутиКХранилищу.Существует() и ФайлПутиКХранилищу.ЭтоКаталог() Тогда - ФайлБазыДанныхХранилища = ДополнитьСлешВПуть(ФайлПутиКХранилищу.ПолноеИмя) + "1cv8ddb.1CD"; + ФайлБазыДанныхХранилища = ОбъединитьПути(ФайлПутиКХранилищу.ПолноеИмя, "1cv8ddb.1CD"); ИначеЕсли ФайлПутиКХранилищу.Существует() Тогда ФайлБазыДанныхХранилища = ФайлПутиКХранилищу.ПолноеИмя; Иначе @@ -411,26 +409,9 @@ КонецПроцедуры -Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт - разделитель = "\"; - - Если НЕ ЭтоWindows Тогда - разделитель = "/"; - КонецЕсли; - - Если Прав(Каталог, 1) <> разделитель Тогда - Каталог = Каталог + разделитель; - КонецЕсли; - Возврат Каталог; -КонецФункции - - /////////////////////////////////////////////////////////////////// // Точка входа в приложение -СистемнаяИнформация = Новый СистемнаяИнформация; -ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; - Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); Попытка diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 8d0da57..08bac92 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -161,7 +161,7 @@ КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); Если Прав(Файл.ПолноеИмя, 5) = ".Form" Тогда - КаталогФормы = ДополнитьСлешВПуть(НовыйКаталог.ПолноеИмя)+НовыйФайл.ИмяБезРасширения; + КаталогФормы = ОбъединитьПути(НовыйКаталог.ПолноеИмя, НовыйФайл.ИмяБезРасширения); СоздатьКаталог(КаталогФормы); РаспаковатьКонтейнерМетаданных(НовыйФайл.ПолноеИмя, КаталогФормы) КонецЕсли; @@ -289,10 +289,10 @@ Иначе Разрядность = СтрДлина(Строка(ДлинаИменни)); НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-1)+"~"+ДлинаИменни; - НовыйПутьПроверки = Новый Файл(ДополнитьСлешВПуть(КаталогИерархическойСтруктурыМодулей)+ИмяФайла+НовоеИмя); + НовыйПутьПроверки = Новый Файл(ОбъединитьПути(КаталогИерархическойСтруктурыМодулей,ИмяФайла,НовоеИмя)); Если НовыйПутьПроверки.Существует() Тогда СчетчикНовогоИмени = 0; - МассивФайловСущуствующих = НайтиФайлы(ДополнитьСлешВПуть(КаталогИерархическойСтруктурыМодулей)+ИмяФайла, Лев(ЭлементМассива, 58-Разрядность-3)+"*"); + МассивФайловСущуствующих = НайтиФайлы(ОбъединитьПути(КаталогИерархическойСтруктурыМодулей, ИмяФайла), Лев(ЭлементМассива, 58-Разрядность-3)+"*"); СчетчикНовогоИмени = МассивФайловСущуствующих.Количество()+1; НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-3)+"~"+ДлинаИменни+ФорматДвузначноеЧисло(Строка(СчетчикНовогоИмени)); КонецЕсли; @@ -1217,20 +1217,6 @@ Возврат ?(ДоменПочтыДляGitПоУмолчанию = Неопределено, "localhost", ДоменПочтыДляGitПоУмолчанию); КонецФункции -Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт - разделитель = "\"; - - Если НЕ ЭтоWindows Тогда - разделитель = "/"; - КонецЕсли; - - Если Прав(Каталог, 1) <> разделитель Тогда - Каталог = Каталог + разделитель; - КонецЕсли; - Возврат Каталог; -КонецФункции - - ////////////////////////////////////////////////////////////////////////////////////////////// СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 3371e08..824e0ef 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -17,20 +17,6 @@ ////////////////////////////////////////////////////////////////////////////////// // Программный интерфейс -Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт - разделитель = "\"; - - Если НЕ ЭтоWindows Тогда - разделитель = "/"; - КонецЕсли; - - Если Прав(Каталог, 1) <> разделитель Тогда - Каталог = Каталог + разделитель; - КонецЕсли; - Возврат Каталог; -КонецФункции - - Процедура УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт мКонтекстКоманды.КлючСоединенияСБазой = СтрокаСоединения; мКонтекстКоманды.ИмяПользователя = Пользователь; @@ -66,7 +52,7 @@ Параметры.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); КонецЕсли; - ФайлРезультата = ДополнитьСлешВПуть(КаталогСборки())+"source.cf"; + ФайлРезультата = ОбъединитьПути(КаталогСборки(), "source.cf"); Параметры.Добавить("/ConfigurationRepositoryDumpCfg """+ФайлРезультата + """"); @@ -134,7 +120,7 @@ ФайлОбновления = "1cv8.cfu"; КонецЕсли; - ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(ДополнитьСлешВПуть(КаталогВерсии)+ ФайлОбновления)); + ПараметрыЗапуска.Добавить("/UpdateCfg " + ОбернутьВКавычки(ОбъединитьПути(КаталогВерсии, ФайлОбновления))); ВыполнитьКоманду(ПараметрыЗапуска); @@ -249,13 +235,13 @@ Функция КаталогСодержитФайлОбновления(Знач КаталогВерсии) - ФайлОбновления = Новый Файл(ДополнитьСлешВПуть(КаталогВерсии) + "1cv8.cfu"); + ФайлОбновления = Новый Файл(ОбъединитьПути(КаталогВерсии, "1cv8.cfu")); Возврат ФайлОбновления.Существует(); КонецФункции Функция ПутьКВременнойБазе() Экспорт - Возврат ДополнитьСлешВПуть(КаталогСборки()) + "v8r_TempDB"; + Возврат ОбъединитьПути(КаталогСборки(), "v8r_TempDB"); КонецФункции ////////////////////////////////////////////////// @@ -384,7 +370,7 @@ ФайлПриложения = Новый Файл(ПутьКПлатформе1С); Каталог = ФайлПриложения.Путь; - ФайлПриложения = Новый Файл(ДополнитьСлешВПуть(Каталог) + "1cv8c.exe"); + ФайлПриложения = Новый Файл(ОбъединитьПути(Каталог, "1cv8c.exe")); Если Не ФайлПриложения.Существует() Тогда ВызватьИсключение "Не установлен тонкий клиент"; КонецЕсли; @@ -521,7 +507,7 @@ КонецПроцедуры Функция ФайлИнформации() Экспорт - Возврат ДополнитьСлешВПуть(КаталогСборки()) + "log.txt"; + Возврат ОбъединитьПути(КаталогСборки(), "log.txt"); КонецФункции Процедура ОбеспечитьКаталог(Знач Каталог) @@ -540,7 +526,7 @@ КонецФункции Функция ВременнаяБазаСуществует() Экспорт - ФайлБазы = Новый Файл(ДополнитьСлешВПуть(ПутьКВременнойБазе()) + "1cv8.1cd"); + ФайлБазы = Новый Файл(ОбъединитьПути(ПутьКВременнойБазе(), "1cv8.1cd")); Возврат ФайлБазы.Существует(); КонецФункции From 5228c70b576ded8fa0b10f237f78ecb0a74a5c4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Mon, 16 Nov 2015 14:26:55 +0300 Subject: [PATCH 03/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=B0=20=D0=9E=D0=B1=D1=8A=D0=B5=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=82=D1=8C=D0=9F=D1=83=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/multi-controller.os | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/gitsync/src/multi-controller.os b/src/gitsync/src/multi-controller.os index 4a5c600..92b2370 100644 --- a/src/gitsync/src/multi-controller.os +++ b/src/gitsync/src/multi-controller.os @@ -42,25 +42,8 @@ //////////////////////////////////////////////////////////////////////// // Вспомогательные методы -Функция ДополнитьСлешВПуть(Знач Каталог) Экспорт - СистемнаяИнформация = Новый СистемнаяИнформация; - ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; - - разделитель = "\"; - - Если НЕ ЭтоWindows Тогда - разделитель = "/"; - КонецЕсли; - - Если Прав(Каталог, 1) <> разделитель Тогда - Каталог = Каталог + разделитель; - КонецЕсли; - Возврат Каталог; -КонецФункции - - Функция ИмяФайлаБазыХранилища(Знач Каталог) - Возврат ДополнитьСлешВПуть(Каталог) + "1cv8ddb.1CD"; + Возврат ОбъединитьПути(Каталог, "1cv8ddb.1CD"); КонецФункции Функция НеобходимоСинхронизироватьХранилище(Знач Репо) From 3e9073c04241f44268056724604a855cebcb00ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Mon, 16 Nov 2015 14:34:30 +0300 Subject: [PATCH 04/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=B0=20=D0=9F=D0=BE=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=D0=9F=D1=83=D1=82=D0=B8=20()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/unpack.os | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 08bac92..0a8c6c9 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -218,8 +218,7 @@ Если Прав(Файл.Имя, 5) = "files" Тогда // файлы справки. МассивФайлов = НайтиФайлы(Файл.ПолноеИмя, ПолучитьМаскуВсеФайлы()); ИмяНовогоФайла = Лев(Файл.Имя, СтрДлина(Файл.Имя)-6); - Разделитель = ?(ЭтоWindows, "\", "/"); - ИмяНовогоФайла = СтрЗаменить(ИмяНовогоФайла, ".", Разделитель)+".del"; + ИмяНовогоФайла = СтрЗаменить(ИмяНовогоФайла, ".", ПолучитьРазделительПути())+".del"; НовыйФайл = Новый Файл(ОбъединитьПути(КаталогИерархическойСтруктурыМодулей, ИмяНовогоФайла)); НовыйКаталог = Новый Файл(НовыйФайл.Путь); Если НЕ НовыйКаталог.Существует() Тогда @@ -289,7 +288,7 @@ Иначе Разрядность = СтрДлина(Строка(ДлинаИменни)); НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-1)+"~"+ДлинаИменни; - НовыйПутьПроверки = Новый Файл(ОбъединитьПути(КаталогИерархическойСтруктурыМодулей,ИмяФайла,НовоеИмя)); + НовыйПутьПроверки = Новый Файл(КаталогИерархическойСтруктурыМодулей + ПолучитьРазделительПути()+ ИмяФайла + НовоеИмя); Если НовыйПутьПроверки.Существует() Тогда СчетчикНовогоИмени = 0; МассивФайловСущуствующих = НайтиФайлы(ОбъединитьПути(КаталогИерархическойСтруктурыМодулей, ИмяФайла), Лев(ЭлементМассива, 58-Разрядность-3)+"*"); From dc8d4dd29bb6bd3e94f4ce9f4697b374e7c7b433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Mon, 16 Nov 2015 14:50:08 +0300 Subject: [PATCH 05/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=83=D1=82=D0=B8=20=D0=BA=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D0=B5=201?= =?UTF-8?q?=D1=81=20=D0=B2=20linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/cmd-builder.os | 17 ++++++++++++----- src/gitsync/src/unpack.os | 9 ++++++--- src/v8runner/src/v8runner.os | 2 +- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/gitsync/src/cmd-builder.os b/src/gitsync/src/cmd-builder.os index fff68f4..62af616 100644 --- a/src/gitsync/src/cmd-builder.os +++ b/src/gitsync/src/cmd-builder.os @@ -5,16 +5,17 @@ Перем мЗаписьТекста; Перем мПуть; +Перем ЭтоWindows; Функция Открыть(Знач Путь = "") Экспорт Если ПустаяСтрока(Путь) Тогда - мПуть = ВременныеФайлы.НовоеИмяФайла(".bat"); + мПуть = ВременныеФайлы.НовоеИмяФайла(?(ЭтоWindows, ".bat", ".sh")); Иначе мПуть = Путь; КонецЕсли; - - мЗаписьТекста = Новый ЗаписьТекста(мПуть, "cp866"); + Кодировка = ?(ЭтоWindows, "cp866", "utf-8"); + мЗаписьТекста = Новый ЗаписьТекста(мПуть, Кодировка); Возврат мПуть; @@ -30,8 +31,11 @@ Закрыть(); ПутьПакетногоФайла = мПуть; - - СтрокаЗапуска = "cmd.exe /C """ + ПутьПакетногоФайла + """"; + Если ЭтоWindows Тогда + СтрокаЗапуска = "cmd.exe /C """ + ПутьПакетногоФайла + """"; + Иначе + СтрокаЗапуска = "sh -c '" + ПутьПакетногоФайла + "'"); + КонецЕсли; КодВозврата = ""; ЗапуститьПриложение(СтрокаЗапуска,, Истина, КодВозврата); @@ -56,3 +60,6 @@ Открыть(); КонецЕсли; КонецПроцедуры + +СистемнаяИнформация = Новый СистемнаяИнформация; +ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 0a8c6c9..9bb5049 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -170,7 +170,7 @@ ТекстовыйДокумент = Новый ЗаписьТекста(ОбъединитьПути(КаталогИерархическойВыгрузки, "renames.txt")); Для Каждого ЭлементСтроки Из Переименования Цикл - ТекстовыйДокумент.ЗаписатьСтроку(ЭлементСтроки.Источник+"-->"+ЭлементСтроки.Приемник); + ТекстовыйДокумент.ЗаписатьСтроку(ЭлементСтроки.Источник+"-->"+СтрЗаменить(ЭлементСтроки.Приемник, "/", "\"); КонецЦикла; ТекстовыйДокумент.Закрыть(); @@ -334,8 +334,11 @@ Лог.Информация("Текст коммита: <"+Комментарий+">"); КомандныйФайл = СоздатьКомандныйФайл(); - - ДобавитьВКомандныйФайл(КомандныйФайл, "cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); + Если ЭтоWindows Тогда + ДобавитьВКомандныйФайл(КомандныйФайл, "cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); + Иначе + ДобавитьВКомандныйФайл(КомандныйФайл, "cd " + ОбернутьВКавычки(КаталогРабочейКопии)); + КонецЕсли; ДобавитьВКомандныйФайл(КомандныйФайл, "set GIT_AUTHOR_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); ДобавитьВКомандныйФайл(КомандныйФайл, "set GIT_COMMITTER_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); ДобавитьВКомандныйФайл(КомандныйФайл, "git add -A ."); diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 824e0ef..63e4fa9 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -307,7 +307,7 @@ НужныйПуть = Новый Файл(путьКПлатформе + МаксВерсия + "\bin\1cv8.exe"); Иначе КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); - Если КаталогУстановки.Существует() Тогда + Если НЕ КаталогУстановки.Существует() Тогда КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); КонецЕсли; НужныйПуть = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); From 68bc019632a75d0504c390a6b6ca0f830285532c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Mon, 16 Nov 2015 16:46:05 +0300 Subject: [PATCH 06/60] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=94=D0=BB=D0=B8=D0=BD=D0=B0=D0=98=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/unpack.os | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 9bb5049..4fba7f4 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -170,7 +170,7 @@ ТекстовыйДокумент = Новый ЗаписьТекста(ОбъединитьПути(КаталогИерархическойВыгрузки, "renames.txt")); Для Каждого ЭлементСтроки Из Переименования Цикл - ТекстовыйДокумент.ЗаписатьСтроку(ЭлементСтроки.Источник+"-->"+СтрЗаменить(ЭлементСтроки.Приемник, "/", "\"); + ТекстовыйДокумент.ЗаписатьСтроку(ЭлементСтроки.Источник+"-->"+СтрЗаменить(ЭлементСтроки.Приемник, "/", "\")); КонецЦикла; ТекстовыйДокумент.Закрыть(); @@ -278,22 +278,22 @@ Для Счетчик = 0 По КоличествоВсего-1 Цикл ЭлементМассива = МассивИмен.Получить(Счетчик); НовоеИмя = ЭлементМассива; - ДлинаИменни = СтрДлина(ЭлементМассива); + ДлинаИмени = СтрДлина(ЭлементМассива); - Если ДлинаИменни > 58 Тогда - Лог.Отладка("Слишком длинное имя:"+ЭлементМассива +" длина:"+ДлинаИменни); + Если ДлинаИмени > 58 Тогда + Лог.Отладка("Слишком длинное имя:"+ЭлементМассива +" длина:"+ДлинаИмени); Если КэшПереименований.Получить(ЭлементМассива) <> Неопределено Тогда НовоеИмя = КэшПереименований.Получить(ЭлементМассива); Иначе - Разрядность = СтрДлина(Строка(ДлинаИменни)); - НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-1)+"~"+ДлинаИменни; + Разрядность = СтрДлина(Строка(ДлинаИмени)); + НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-1)+"~"+ДлинаИмени; НовыйПутьПроверки = Новый Файл(КаталогИерархическойСтруктурыМодулей + ПолучитьРазделительПути()+ ИмяФайла + НовоеИмя); Если НовыйПутьПроверки.Существует() Тогда СчетчикНовогоИмени = 0; МассивФайловСущуствующих = НайтиФайлы(ОбъединитьПути(КаталогИерархическойСтруктурыМодулей, ИмяФайла), Лев(ЭлементМассива, 58-Разрядность-3)+"*"); СчетчикНовогоИмени = МассивФайловСущуствующих.Количество()+1; - НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-3)+"~"+ДлинаИменни+ФорматДвузначноеЧисло(Строка(СчетчикНовогоИмени)); + НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-3)+"~"+ДлинаИмени+ФорматДвузначноеЧисло(Строка(СчетчикНовогоИмени)); КонецЕсли; КэшПереименований.Вставить(ЭлементМассива, НовоеИмя); From bbe0bdba77099ed9e1090375f7f7c81d8fc854b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 1 Dec 2015 14:40:03 +0300 Subject: [PATCH 07/60] =?UTF-8?q?=D0=9F=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=20linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/cmd-builder.os | 2 +- src/gitsync/src/unpack.os | 110 ++++++++++++++++++--------------- src/tool1cd/config-storage.os | 14 ++--- src/tool1cd/table-reader.os | 14 ++--- src/v8runner/src/v8runner.os | 15 +++-- 5 files changed, 86 insertions(+), 69 deletions(-) diff --git a/src/gitsync/src/cmd-builder.os b/src/gitsync/src/cmd-builder.os index 62af616..d0bb762 100644 --- a/src/gitsync/src/cmd-builder.os +++ b/src/gitsync/src/cmd-builder.os @@ -34,7 +34,7 @@ Если ЭтоWindows Тогда СтрокаЗапуска = "cmd.exe /C """ + ПутьПакетногоФайла + """"; Иначе - СтрокаЗапуска = "sh -c '" + ПутьПакетногоФайла + "'"); + СтрокаЗапуска = "sh '" + ПутьПакетногоФайла + "'"; КонецЕсли; КодВозврата = ""; diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 4fba7f4..aa57fa1 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -126,8 +126,8 @@ //ЗарегистрироватьВременныйФайл(КаталогИерархическойСтруктурыМодулей); TODO выяснить почему временный? КонецЕсли; - ЗавершитьПроцесс_TGitCache_exe(); - + ЗавершитьПроцесс_TGitCache_exe(); + ОчиститьЦелевойКаталогВыгрузки(КаталогИерархическойВыгрузки); Переименования = Новый ТаблицаЗначений; @@ -322,7 +322,7 @@ // Выполняет фиксацию изменений в локальном каталоге git // Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата=Неопределено) Экспорт - + Если Дата = Неопределено Тогда Дата = ТекущаяДата(); КонецЕсли; @@ -334,13 +334,14 @@ Лог.Информация("Текст коммита: <"+Комментарий+">"); КомандныйФайл = СоздатьКомандныйФайл(); - Если ЭтоWindows Тогда + ПрефиксЭкспортаПеременной = ?(ЭтоWindows, "set", "export"); + Если ЭтоWindows = Истина Тогда ДобавитьВКомандныйФайл(КомандныйФайл, "cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); Иначе ДобавитьВКомандныйФайл(КомандныйФайл, "cd " + ОбернутьВКавычки(КаталогРабочейКопии)); КонецЕсли; - ДобавитьВКомандныйФайл(КомандныйФайл, "set GIT_AUTHOR_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); - ДобавитьВКомандныйФайл(КомандныйФайл, "set GIT_COMMITTER_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); + ДобавитьВКомандныйФайл(КомандныйФайл, ПрефиксЭкспортаПеременной + " GIT_AUTHOR_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); + ДобавитьВКомандныйФайл(КомандныйФайл, ПрефиксЭкспортаПеременной + " GIT_COMMITTER_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); ДобавитьВКомандныйФайл(КомандныйФайл, "git add -A ."); ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); @@ -353,7 +354,7 @@ // КомандаКоммита = "git commit -a --file="""+ИмяФайлаКомментария+""" --author="""+Автор+""" >"+ИмяФайлаЛогаКоммита; КомандаКоммита = "git commit -a --file="""+ИмяФайлаКомментария+""" --author="""+Автор+""" "+СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина); ДобавитьВКомандныйФайл(КомандныйФайл, КомандаКоммита); - ДобавитьВКомандныйФайл(КомандныйФайл, "exit /b %ERRORLEVEL%"); + ДобавитьВКомандныйФайл(КомандныйФайл, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); ИмяФайлаВыполнения = ЗакрытьКомандныйФайл(КомандныйФайл); @@ -396,8 +397,12 @@ КомандныйФайл = СоздатьКомандныйФайл(); ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); - - ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); + Если ЭтоWindows = Истина Тогда + ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); + Иначе + ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); + КонецЕсли; + ДобавитьВКомандныйФайл(КомандныйФайл, "git gc --auto"); ПараметрыКоманды = Новый Массив; @@ -413,11 +418,11 @@ КонецЕсли; ДобавитьВКомандныйФайл(КомандныйФайл, СтрокаКоманды); - ДобавитьВКомандныйФайл(КомандныйФайл, "exit /b %ERRORLEVEL%"); + ДобавитьВКомандныйФайл(КомандныйФайл, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); Результат = ВыполнитьКомандныйФайл(КомандныйФайл); ВывестиТекстФайла(ИмяФайлаЛогаКоммита); - ЗавершитьПроцесс_TGitCache_exe(); + ЗавершитьПроцесс_TGitCache_exe(); Возврат Результат; @@ -429,8 +434,11 @@ КомандныйФайл = СоздатьКомандныйФайл(); ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); - - ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); + Если ЭтоWindows Тогда + ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); + Иначе + ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); + КонецЕсли; ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git pull"); @@ -442,7 +450,7 @@ сообщение = "строкаКоманды = <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; Лог.Отладка(сообщение); ДобавитьВКомандныйФайл(КомандныйФайл, СтрокаКоманды); - ДобавитьВКомандныйФайл(КомандныйФайл, "exit /b %ERRORLEVEL%"); + ДобавитьВКомандныйФайл(КомандныйФайл, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); Результат = ВыполнитьКомандныйФайл(КомандныйФайл); ВывестиТекстФайла(ИмяФайлаЛогаКоммита); @@ -708,8 +716,11 @@ Функция КлонироватьРепозитарий(Знач КаталогЛокальнойКопии, Знач URLРепозитария) Экспорт Батник = СоздатьКомандныйФайл(); - - ДобавитьВКомандныйФайл(Батник, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", КаталогЛокальнойКопии)); + Если ЭтоWindows Тогда + ДобавитьВКомандныйФайл(Батник, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", КаталогЛокальнойКопии)); + Иначе + ДобавитьВКомандныйФайл(Батник, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", КаталогЛокальнойКопии)); + КонецЕсли; ФайлЛога = ВременныеФайлы.СоздатьФайл("log"); ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git clone"); @@ -720,7 +731,7 @@ КоманднаяСтрока = СобратьКоманднуюСтроку(ПараметрыКоманды); Лог.Отладка(КоманднаяСтрока); ДобавитьВКомандныйФайл(Батник, КоманднаяСтрока); - ДобавитьВКомандныйФайл(Батник, "exit /b %ERRORLEVEL%"); + ДобавитьВКомандныйФайл(Батник, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); РезультатКлонирования = ВыполнитьКомандныйФайл(Батник); @@ -736,7 +747,8 @@ Батник = СоздатьКомандныйФайл(); Лог.Отладка(КаталогЛокальнойКопии); - ДобавитьВКомандныйФайл(Батник, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", КаталогЛокальнойКопии)); + ДопСтрокаПерехода = ?(ЭтоWindows, "/d", ""); + ДобавитьВКомандныйФайл(Батник, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd %2 ""%1""", КаталогЛокальнойКопии, ДопСтрокаПерехода)); ФайлЛога = ВременныеФайлы.СоздатьФайл("log"); ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git init"); @@ -745,7 +757,7 @@ КоманднаяСтрока = СобратьКоманднуюСтроку(ПараметрыКоманды); Лог.Отладка(КоманднаяСтрока); ДобавитьВКомандныйФайл(Батник, КоманднаяСтрока); - ДобавитьВКомандныйФайл(Батник, "exit /b %ERRORLEVEL%"); + ДобавитьВКомандныйФайл(Батник, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); Результат = ВыполнитьКомандныйФайл(Батник); @@ -1003,21 +1015,21 @@ Функция ФайлПрограммыРаспаковки() Если мФайлПрограммыРаспаковки = Неопределено Тогда - Если ЭтоWindows = Истина Тогда - КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\bin"); - ФайлПрограммы = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "UnpackV8.exe")); - Если Не ФайлПрограммы.Существует() Тогда - ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружен файл программы распаковки: <%1>", ФайлПрограммы.ПолноеИмя); - КонецЕсли; - - ФайлZLib = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "zlib1.dll")); - Если Не ФайлZLib.Существует() Тогда - ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружена библиотека zlib1: <%1>", ФайлZLib.ПолноеИмя); - КонецЕсли; - мФайлПрограммыРаспаковки = ФайлПрограммы.ПолноеИмя; - Иначе - мФайлПрограммыРаспаковки = "v8unpack"; //установка происходит из репозитариев, поэтому уже в переменной path - КонецЕсли; + Если ЭтоWindows = Истина Тогда + КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\bin"); + ФайлПрограммы = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "UnpackV8.exe")); + Если Не ФайлПрограммы.Существует() Тогда + ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружен файл программы распаковки: <%1>", ФайлПрограммы.ПолноеИмя); + КонецЕсли; + + ФайлZLib = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "zlib1.dll")); + Если Не ФайлZLib.Существует() Тогда + ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружена библиотека zlib1: <%1>", ФайлZLib.ПолноеИмя); + КонецЕсли; + мФайлПрограммыРаспаковки = ФайлПрограммы.ПолноеИмя; + Иначе + мФайлПрограммыРаспаковки = "v8unpack"; //установка происходит из репозитариев, поэтому уже в переменной path + КонецЕсли; КонецЕсли; @@ -1175,22 +1187,22 @@ Функция ЗапуститьПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, Знач ТекущийКаталог = "\.") рез = -1; - Если НЕ ЭтоWindows И ТекущийКаталог = "\." Тогда - ТекущийКаталог = "./"; - КонецЕсли; - + Если НЕ ЭтоWindows И ТекущийКаталог = "\." Тогда + ТекущийКаталог = "./"; + КонецЕсли; + Попытка КодВозврата = ""; ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); рез = КодВозврата; Исключение // Для x64 ОС - Если ЭтоWindows Тогда - СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска; - КодВозврата = ""; - ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); - рез = КодВозврата; - КонецЕсли; + Если ЭтоWindows Тогда + СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска; + КодВозврата = ""; + ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); + рез = КодВозврата; + КонецЕсли; КонецПопытки; Возврат рез; @@ -1198,12 +1210,12 @@ КонецФункции // ЗапуститьПриложениеИДождатьсяЗавершения() Процедура ЗавершитьПроцесс_TGitCache_exe() - Если ЭтоWindows Тогда - СтрокаКоманды = "taskkill /im TGitCache.exe /T /F"; - Лог.Отладка("ЗавершитьПроцесс_TGitCache_exe: команда "+ СтрокаКоманды); + Если ЭтоWindows Тогда + СтрокаКоманды = "taskkill /im TGitCache.exe /T /F"; + Лог.Отладка("ЗавершитьПроцесс_TGitCache_exe: команда "+ СтрокаКоманды); - ЗапуститьПриложениеИДождатьсяЗавершения(СтрокаКоманды); - КонецЕсли; + ЗапуститьПриложениеИДождатьсяЗавершения(СтрокаКоманды); + КонецЕсли; КонецПроцедуры Функция ФорматДвузначноеЧисло(ЗначениеЧисло) diff --git a/src/tool1cd/config-storage.os b/src/tool1cd/config-storage.os index 5bd20c6..dcf9629 100644 --- a/src/tool1cd/config-storage.os +++ b/src/tool1cd/config-storage.os @@ -11,20 +11,20 @@ Процедура ВыгрузитьВерсиюКонфигурации(Знач ФайлХранилища, Знач ВыходнойФайл, Знач НомерВерсии = 0) Экспорт ЛогTool1CD = ВременныеФайлы.НовоеИмяФайла("txt"); - - СтрокаЗапуска = """" + ПутьTool1CD() + """ """ + ФайлХранилища - + """ -l """ + ЛогTool1CD + ПрефиксПути = ?(ЭтоWindows = Ложь, "Z:", ""); + СтрокаЗапуска = """" + ПутьTool1CD() + """ """ + ПрефиксПути + ФайлХранилища + + """ -l """ + ПрефиксПути + ЛогTool1CD + """ -q -ne -drc " + Строка(НомерВерсии) - +" """ + ВыходнойФайл +""""; + +" """ + ПрефиксПути + ВыходнойФайл +""""; ФайлИсходника = Новый Файл(ВыходнойФайл); ФайлЛога = Новый Файл(ЛогTool1CD); КодВозврата = ""; - Если НЕ ЭтоWindows Тогда - СтрокаЗапуска = "wine '"+СтрокаЗапуска+"'"; - КонецЕсли; + Если НЕ ЭтоWindows Тогда + СтрокаЗапуска = "wine "+СтрокаЗапуска; + КонецЕсли; Лог.Отладка(СтрокаЗапуска); ЗапуститьПриложение(СтрокаЗапуска, "", Истина, КодВозврата); Если ФайлЛога.Существует() Тогда diff --git a/src/tool1cd/table-reader.os b/src/tool1cd/table-reader.os index cc30800..9a023b0 100644 --- a/src/tool1cd/table-reader.os +++ b/src/tool1cd/table-reader.os @@ -26,17 +26,17 @@ Функция ВыгрузитьТаблицыВXML(Знач ИменаТаблиц) Экспорт ЛогTool1CD = ВременныеФайлы.НовоеИмяФайла("txt"); - + ПрефиксПути = ?(ЭтоWindows = Ложь, "Z:", ""); СтрокаЗапуска = """" + ПутьTool1CD() + """ " - + """" + мИмяФайлаБазы + """" - + " -l """ + ЛогTool1CD + """" + + """"+ ПрефиксПути + мИмяФайлаБазы + """" + + " -l """ +ПрефиксПути+ ЛогTool1CD + """" + " -q -ne -ex " - + РабочийКаталог() + " " + ИменаТаблиц; + + ПрефиксПути + РабочийКаталог() + " " + ИменаТаблиц; КодВозврата = ""; - Если НЕ ЭтоWindows Тогда - СтрокаЗапуска = "wine '"+СтрокаЗапуска+"'"; - КонецЕсли; + Если НЕ ЭтоWindows Тогда + СтрокаЗапуска = "wine "+СтрокаЗапуска; + КонецЕсли; Лог.Отладка(СтрокаЗапуска); ЗапуститьПриложение(СтрокаЗапуска, "", Истина, КодВозврата); diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 63e4fa9..0338fba 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -198,10 +198,10 @@ Параметры.Добавить("/CheckConfig"); ДобавитьФлагПроверки(Параметры, ТонкийКлиент, "-ThinClient"); - ДобавитьФлагПроверки(Параметры, ВебКлиент, "-WebClient"); - ДобавитьФлагПроверки(Параметры, Сервер, "-Server"); - ДобавитьФлагПроверки(Параметры, ВнешнееСоединение, "-ExternalConnection"); - ДобавитьФлагПроверки(Параметры, ТолстыйКлиентОбычноеПриложение, "-ThickClientOrdinaryApplication"); + ДобавитьФлагПроверки(Параметры, ВебКлиент, "-WebClient"); + ДобавитьФлагПроверки(Параметры, Сервер, "-Server"); + ДобавитьФлагПроверки(Параметры, ВнешнееСоединение, "-ExternalConnection"); + ДобавитьФлагПроверки(Параметры, ТолстыйКлиентОбычноеПриложение, "-ThickClientOrdinaryApplication"); ВыполнитьКоманду(Параметры); @@ -476,7 +476,12 @@ Приложение = ОбернутьВКавычки(ПутьКПлатформе1С()); Лог.Отладка(Приложение + СтрокаДляЛога); - ЗапуститьПриложение(Приложение + СтрокаЗапуска, , Истина, КодВозврата); + Если ЭтоWindows = Ложь Тогда + СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; + Иначе + СтрокаЗапуска = Приложение + СтрокаЗапуска; + КонецЕсли; + ЗапуститьПриложение(СтрокаЗапуска, , Истина, КодВозврата); Возврат КодВозврата; From 39b6f54e0e1d9079c1f9fa0bcf8e608e70ef876c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Wed, 2 Dec 2015 16:00:44 +0300 Subject: [PATCH 08/60] =?UTF-8?q?=D0=92=20linux=20=D1=81=D0=BE=D0=B7=D0=B4?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D0=BC=20=D0=B2=20=D0=B2=D0=B5=D1=80=D1=85?= =?UTF-8?q?=D0=BD=D0=B5=D0=BC=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B5=20=D0=B8=20=D1=82.=D0=BA.=20=D0=B5=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BE=D1=82=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=20=D0=BD=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=8F=D0=BB=D0=BE=D1=81=D1=8C=20=D0=BD=D0=B0=20=D1=81?= =?UTF-8?q?=D1=83=D1=89=D0=B5=D1=81=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 0338fba..5be183f 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -502,7 +502,6 @@ Лог.Отладка("файл информации: |"+Текст); - Возврат Текст; КонецФункции @@ -531,7 +530,8 @@ КонецФункции Функция ВременнаяБазаСуществует() Экспорт - ФайлБазы = Новый Файл(ОбъединитьПути(ПутьКВременнойБазе(), "1cv8.1cd")); + ФайлБазы = Новый Файл(ОбъединитьПути(ПутьКВременнойБазе(), "1Cv8.1CD")); + Возврат ФайлБазы.Существует(); КонецФункции From b1302b573b60e193380c85640ee6ab89c8eea571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Wed, 2 Dec 2015 16:01:19 +0300 Subject: [PATCH 09/60] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=D0=B6=D0=BA=D0=B0=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B8=208.3.7=20=D0=B2=20=D0=B8=D0=B5=D1=80=D0=B0=D1=80=D1=85?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=BC=20=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B0=D1=82=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 20 +++++++++--- src/gitsync/src/unpack.os | 67 +++++++++++++++++++++++++------------- 2 files changed, 59 insertions(+), 28 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 58b85a4..5eb0d47 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -90,6 +90,7 @@ Парсер.ДобавитьИменованныйПараметр("-email"); Парсер.ДобавитьИменованныйПараметр("-v8version"); Парсер.ДобавитьИменованныйПараметр("-debug"); + Парсер.ДобавитьИменованныйПараметр("-format"); КонецПроцедуры @@ -101,13 +102,16 @@ Иначе УстановитьРежимОтладкиПриНеобходимости(Параметры); - + Сообщить("Формат "+Параметры["-format"]); Синхронизировать( Параметры["ПутьКХранилищу"], Параметры["URLРепозитория"], Параметры["ЛокальныйКаталогГит"], Параметры["-email"], - Параметры["-v8version"]); + Параметры["-v8version"], + , + , + Параметры["-format"]); КонецЕсли; @@ -210,19 +214,24 @@ Знач ДоменПочты = Неопределено, Знач ВерсияПлатформы = Неопределено, Знач НачальнаяВерсия = 0, - Знач КонечнаяВерсия = 0) Экспорт + Знач КонечнаяВерсия = 0, + Знач Формат = Неопределено) Экспорт Лог.Информация("Начинаю синхронизацию хранилища 1С и репозитария GIT"); Если ЛокальныйКаталогГит = Неопределено Тогда ЛокальныйКаталогГит = ТекущийКаталог(); КонецЕсли; + Если Формат = Неопределено Тогда + Формат = "plain"; + КонецЕсли; Лог.Отладка("ПутьКХранилищу = " + ПутьКХранилищу); Лог.Отладка("URLРепозитория = " + URLРепозитория); Лог.Отладка("ЛокальныйКаталогГит = " + ЛокальныйКаталогГит); Лог.Отладка("ДоменПочты = " + ДоменПочты); Лог.Отладка("ВерсияПлатформы = " + ВерсияПлатформы); + Лог.Отладка("Формат = " + Формат); ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу); @@ -237,7 +246,7 @@ КонецЕсли; Лог.Информация("Синхронизация изменений с хранилищем"); - Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит, ФайлБазыДанныхХранилища, НачальнаяВерсия, КонечнаяВерсия); + Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит, ФайлБазыДанныхХранилища, НачальнаяВерсия, КонечнаяВерсия, Формат); Лог.Информация("Отправка изменений на удаленный узел"); КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, "master"); @@ -369,7 +378,8 @@ Сообщить("Возможные ключи:"); Сообщить(" -email <домен почты для пользователей git> | -v8version <маска версии 1С> - | -debug "); + | -debug + | -format "); Сообщить("Для подсказки по конкретной команде наберите gitsync help <команда>"); diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index aa57fa1..66e3381 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -27,7 +27,7 @@ // Выполняет выгрузку конфигурации в файлы // и распределение файлов по каталогам согласно иерархии метаданных. // -Процедура РазобратьФайлКонфигурации(Знач ФайлКонфигурации, Знач ВыходнойКаталог) Экспорт +Процедура РазобратьФайлКонфигурации(Знач ФайлКонфигурации, Знач ВыходнойКаталог, Знач Формат) Экспорт ОбъектФайл = Новый Файл(ФайлКонфигурации); Если Не ОбъектФайл.Существует() Тогда @@ -42,7 +42,7 @@ Попытка ВыгрузитьМодулиКонфигурации(ФайлКонфигурации, КаталогПлоскойВыгрузки); - РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, ВыходнойКаталог); + РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, ВыходнойКаталог, Формат); Исключение ВременныеФайлы.УдалитьФайл(КаталогПлоскойВыгрузки); ВызватьИсключение; @@ -65,7 +65,7 @@ ЛогКонфигуратора = Логирование.ПолучитьЛог("oscript.lib.v8runner"); ЛогКонфигуратора.УстановитьУровень(Лог.Уровень()); - + Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь); Если Не (Новый Файл(КаталогПлоскойВыгрузки).Существует()) Тогда @@ -108,8 +108,8 @@ // Выполняет перенос файлов из каталога плоской выгрузки в каталог с иерархической структурой метаданных. // -Процедура РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(Знач КаталогПлоскойВыгрузки, Знач КаталогИерархическойВыгрузки) Экспорт - +Процедура РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(Знач КаталогПлоскойВыгрузки, Знач КаталогИерархическойВыгрузки, Знач Формат) Экспорт + Лог.Информация("Раскладываем модули по папкам согласно иерархии метаданных"); КэшПереименований = Новый Соответствие; @@ -134,33 +134,54 @@ Переименования.Колонки.Добавить("Источник"); Переименования.Колонки.Добавить("Приемник"); - СписокФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы()); + ИскатьВПодкаталогах = ?(Формат = "hierarchical", Истина, Ложь); + СписокФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы(), ИскатьВПодкаталогах); Лог.Отладка("Найдено файлов выгрузки: "+СписокФайлов.Количество()+" шт."); + Сообщить("Каталога иерархической:"+КаталогИерархическойВыгрузки); Для Каждого Файл Из СписокФайлов Цикл - Если Файл.ЭтоКаталог() Тогда - ОбработатьКаталогРезультатаВыгрузки(Файл, КаталогИерархическойВыгрузки, Переименования); - Продолжить; - КонецЕсли; - - ИмяФайла = СкорректироватьИмяФайлаМетаданных(Файл.ИмяБезРасширения); - - //Определим длину Наименования папки, по умолчанию не больше 60 символов. - Если СтрДлина(ИмяФайла)>144 Тогда - СократитьДлинуИмениФайла(ИмяФайла, КаталогИерархическойВыгрузки); + ИмяФайлаДляПерименования = Файл.Имя; + Если Формат = "hierarchical" Тогда + ИмяНовогоФайла = СтрЗаменить(Файл.ПолноеИмя, КаталогПлоскойВыгрузки, ""); + ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="/", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); + Сообщить(ИмяНовогоФайла); + Если Файл.ЭтоКаталог() Тогда + ИмяКаталога = ОбъединитьПути(КаталогИерархическойВыгрузки, ИмяНовогоФайла); + Сообщить("Имя нового каталога:"+ИмяКаталога); + ФайлКаталога = Новый Файл(ИмяКаталога); + Если ФайлКаталога.Существует() = Ложь Тогда + СоздатьКаталог(ИмяКаталога); + КонецЕсли; + Продолжить; + КонецЕсли; + ИмяФайлаДляПерименования = ИмяНовогоФайла; + Иначе + Если Файл.ЭтоКаталог() Тогда + ОбработатьКаталогРезультатаВыгрузки(Файл, КаталогИерархическойВыгрузки, Переименования); + Продолжить; + КонецЕсли; + + ИмяФайла = СкорректироватьИмяФайлаМетаданных(Файл.ИмяБезРасширения); + + //Определим длину Наименования папки, по умолчанию не больше 60 символов. + Если СтрДлина(ИмяФайла)>144 Тогда + СократитьДлинуИмениФайла(ИмяФайла, КаталогИерархическойВыгрузки); + КонецЕсли; + + ИмяНовогоФайла = СтрЗаменить(ИмяФайла, ".", ПолучитьРазделительПути())+Файл.Расширение; + КонецЕсли; - ИмяНовогоФайла = СтрЗаменить(ИмяФайла, ".", ПолучитьРазделительПути())+Файл.Расширение; НовыйФайл = Новый Файл(ОбъединитьПути(КаталогИерархическойВыгрузки, ИмяНовогоФайла)); НовыйКаталог = Новый Файл(НовыйФайл.Путь); Если НЕ НовыйКаталог.Существует() Тогда СоздатьКаталог(НовыйКаталог.ПолноеИмя); КонецЕсли; - ДобавитьПереименование(Переименования,Файл.Имя,ИмяНовогоФайла); + ДобавитьПереименование(Переименования,ИмяФайлаДляПерименования,ИмяНовогоФайла); КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); - Если Прав(Файл.ПолноеИмя, 5) = ".Form" Тогда + Если Нрег(Прав(Файл.ПолноеИмя, 5)) = ".form" Тогда КаталогФормы = ОбъединитьПути(НовыйКаталог.ПолноеИмя, НовыйФайл.ИмяБезРасширения); СоздатьКаталог(КаталогФормы); РаспаковатьКонтейнерМетаданных(НовыйФайл.ПолноеИмя, КаталогФормы) @@ -784,7 +805,7 @@ // Основная функция синхронизации. Перемещает в git набор коммитов хранилища 1С // -Процедура СинхронизироватьХранилищеКонфигурацийСГит(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0) Экспорт +Процедура СинхронизироватьХранилищеКонфигурацийСГит(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = "hierarchical") Экспорт Лог.Информация("Начало синхронизации с git"); ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища); @@ -810,7 +831,7 @@ Попытка Лог.Информация("Получаем исходники для версии " + СледующаяВерсия); - РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия); + РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия, Формат); ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата); Исключение @@ -890,7 +911,7 @@ КонецФункции -Процедура РазложитьМодулиПоНомеруВерсииХранилища1С(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НомерВерсии) +Процедура РазложитьМодулиПоНомеруВерсииХранилища1С(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НомерВерсии, Знач Формат) ФайлХранилища = Новый Файл(ФайлХранилища); Если ФайлХранилища.Существует() И ФайлХранилища.ЭтоФайл() И ВРег(ФайлХранилища.Расширение) = ".1CD" Тогда @@ -899,7 +920,7 @@ Лог.Отладка("Выгружаем версию хранилища в файл " + ФайлВерсии); Попытка ПоНомеруВерсииСохранитьКонфигурациюСредствамиTool1CD(ФайлХранилища.ПолноеИмя, ФайлВерсии, НомерВерсии); - РазобратьФайлКонфигурации(ФайлВерсии, КаталогРабочейКопии); + РазобратьФайлКонфигурации(ФайлВерсии, КаталогРабочейКопии, Формат); Исключение ВременныеФайлы.УдалитьФайл(ВремКаталог); ВызватьИсключение; From 674f516296ad3437562ba4f3e8aac4c8af921794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Wed, 2 Dec 2015 18:01:06 +0300 Subject: [PATCH 10/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Убрал отладочные ненужные сообщения, перенес в переменную строку описания иерархии. --- src/gitsync/src/gitsync.os | 1 - src/gitsync/src/unpack.os | 14 +++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 5eb0d47..abb7dda 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -102,7 +102,6 @@ Иначе УстановитьРежимОтладкиПриНеобходимости(Параметры); - Сообщить("Формат "+Параметры["-format"]); Синхронизировать( Параметры["ПутьКХранилищу"], Параметры["URLРепозитория"], diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 66e3381..213b1c8 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -17,6 +17,7 @@ Перем мФайлПрограммыРаспаковки; Перем мАвторизацияВХранилищеСредствами1С; Перем ЭтоWindows; +Перем ОписаниеИерархическогоФормата; /////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -137,23 +138,21 @@ ИскатьВПодкаталогах = ?(Формат = "hierarchical", Истина, Ложь); СписокФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы(), ИскатьВПодкаталогах); Лог.Отладка("Найдено файлов выгрузки: "+СписокФайлов.Количество()+" шт."); - Сообщить("Каталога иерархической:"+КаталогИерархическойВыгрузки); Для Каждого Файл Из СписокФайлов Цикл - ИмяФайлаДляПерименования = Файл.Имя; - Если Формат = "hierarchical" Тогда + ИмяФайлаДляПереименования = Файл.Имя; + Если Формат = ОписаниеИерархическогоФормата Тогда ИмяНовогоФайла = СтрЗаменить(Файл.ПолноеИмя, КаталогПлоскойВыгрузки, ""); ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="/", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); - Сообщить(ИмяНовогоФайла); + ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="\", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); Если Файл.ЭтоКаталог() Тогда ИмяКаталога = ОбъединитьПути(КаталогИерархическойВыгрузки, ИмяНовогоФайла); - Сообщить("Имя нового каталога:"+ИмяКаталога); ФайлКаталога = Новый Файл(ИмяКаталога); Если ФайлКаталога.Существует() = Ложь Тогда СоздатьКаталог(ИмяКаталога); КонецЕсли; Продолжить; КонецЕсли; - ИмяФайлаДляПерименования = ИмяНовогоФайла; + ИмяФайлаДляПереименования = ИмяНовогоФайла; Иначе Если Файл.ЭтоКаталог() Тогда ОбработатьКаталогРезультатаВыгрузки(Файл, КаталогИерархическойВыгрузки, Переименования); @@ -177,7 +176,7 @@ СоздатьКаталог(НовыйКаталог.ПолноеИмя); КонецЕсли; - ДобавитьПереименование(Переименования,ИмяФайлаДляПерименования,ИмяНовогоФайла); + ДобавитьПереименование(Переименования,ИмяФайлаДляПереименования,ИмяНовогоФайла); КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); @@ -1260,3 +1259,4 @@ ДоменПочтыДляGitПоУмолчанию = "localhost"; ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "cmd-builder.os"), "КомандныйФайл"); +ОписаниеИерархическогоФормата = "hierarchical"; \ No newline at end of file From 91ba744973a6834bba3c21a99fff01b2a8ba1966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=83=D1=80=20=D0=90=D1=8E=D1=85=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Wed, 9 Dec 2015 13:00:34 +0300 Subject: [PATCH 11/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83=20=D1=81=20?= =?UTF-8?q?8.3.7=20(=D0=BB=D0=B8=D0=BD=D0=B5=D0=B9=D0=BD=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0)=20fix=20#39?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/unpack.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index aa57fa1..912e87e 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -79,7 +79,7 @@ ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); ПараметрыЗапуска.Добавить("/Visible"); - ПараметрыЗапуска.Добавить("/DumpConfigToFiles""" + КаталогПлоскойВыгрузки + """"); + ПараметрыЗапуска.Добавить("/DumpConfigToFiles """ + КаталогПлоскойВыгрузки + """ -format Plain"); ВыполнитьКомандуКонфигуратора(Конфигуратор, ПараметрыЗапуска); From 3c8a2a8f7219dbb68a584621490f87b59d3b8906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Sat, 12 Dec 2015 19:39:32 +0300 Subject: [PATCH 12/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83?= =?UTF-8?q?=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B8=D0=B5=D1=80=D0=B0=D1=80=D1=85=D0=B8=D1=87=D0=B5?= =?UTF-8?q?=D1=81=D0=BA=D1=83=D1=8E.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/unpack.os | 505 +++++++++++++++++++------------------- 1 file changed, 255 insertions(+), 250 deletions(-) diff --git a/src/gitsync/src/unpack.os b/src/gitsync/src/unpack.os index 2111064..8e83695 100644 --- a/src/gitsync/src/unpack.os +++ b/src/gitsync/src/unpack.os @@ -25,7 +25,7 @@ Перем ДоменПочтыДляGitПоУмолчанию Экспорт; Перем ВерсияПлатформы Экспорт; -// Выполняет выгрузку конфигурации в файлы +// Выполняет выгрузку конфигурации в файлы // и распределение файлов по каталогам согласно иерархии метаданных. // Процедура РазобратьФайлКонфигурации(Знач ФайлКонфигурации, Знач ВыходнойКаталог, Знач Формат) Экспорт @@ -36,54 +36,59 @@ КонецЕсли; КаталогПлоскойВыгрузки = ВременныеФайлы.СоздатьКаталог(); - + Если Не (Новый Файл(ВыходнойКаталог).Существует()) Тогда СоздатьКаталог(ВыходнойКаталог); КонецЕсли; - + Попытка - ВыгрузитьМодулиКонфигурации(ФайлКонфигурации, КаталогПлоскойВыгрузки); + ВыгрузитьМодулиКонфигурации(ФайлКонфигурации, КаталогПлоскойВыгрузки, Формат); РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, ВыходнойКаталог, Формат); Исключение ВременныеФайлы.УдалитьФайл(КаталогПлоскойВыгрузки); ВызватьИсключение; КонецПопытки; - + ВременныеФайлы.УдалитьФайл(КаталогПлоскойВыгрузки); КонецПроцедуры // Выполняет штатную выгрузку конфигурации в файлы (средствами платформы 8.3) // -Процедура ВыгрузитьМодулиКонфигурации(Знач ФайлКонфигурации, Знач КаталогПлоскойВыгрузки) Экспорт - +Процедура ВыгрузитьМодулиКонфигурации(Знач ФайлКонфигурации, Знач КаталогПлоскойВыгрузки, Знач Формат) Экспорт + Конфигуратор = ПолучитьМенеджерКонфигуратора(); Если ВерсияПлатформы <> Неопределено Тогда Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы); Иначе Конфигуратор.ИспользоватьВерсиюПлатформы("8.3"); КонецЕсли; - + ЛогКонфигуратора = Логирование.ПолучитьЛог("oscript.lib.v8runner"); ЛогКонфигуратора.УстановитьУровень(Лог.Уровень()); - + Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь); - + Если Не (Новый Файл(КаталогПлоскойВыгрузки).Существует()) Тогда СоздатьКаталог(КаталогПлоскойВыгрузки); КонецЕсли; - + МассивФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы()); Если МассивФайлов.Количество() <> 0 Тогда ВызватьИсключение "В каталоге <"+КаталогПлоскойВыгрузки+"> не должно быть файлов"; КонецЕсли; - + ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); ПараметрыЗапуска.Добавить("/Visible"); - ПараметрыЗапуска.Добавить("/DumpConfigToFiles """ + КаталогПлоскойВыгрузки + """ -format Plain"); - + Если Формат = ОписаниеИерархическогоФормата Тогда + ПараметрыЗапуска.Добавить("/DumpConfigToFiles """ + КаталогПлоскойВыгрузки + """"); + Иначе + ПараметрыЗапуска.Добавить("/DumpConfigToFiles """ + КаталогПлоскойВыгрузки + """ -format Plain"); + КонецЕсли; + + ВыполнитьКомандуКонфигуратора(Конфигуратор, ПараметрыЗапуска); - + КонецПроцедуры Функция ПолучитьМенеджерКонфигуратора() @@ -95,51 +100,51 @@ КонецФункции Процедура ВыполнитьКомандуКонфигуратора(Знач Конфигуратор, Знач ПараметрыЗапуска) - + Попытка Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); Исключение ВременныеФайлы.УдалитьФайл(Конфигуратор.КаталогСборки()); ВызватьИсключение; КонецПопытки; - + ВременныеФайлы.УдалитьФайл(Конфигуратор.КаталогСборки()); - + КонецПроцедуры // Выполняет перенос файлов из каталога плоской выгрузки в каталог с иерархической структурой метаданных. // Процедура РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(Знач КаталогПлоскойВыгрузки, Знач КаталогИерархическойВыгрузки, Знач Формат) Экспорт - + Лог.Информация("Раскладываем модули по папкам согласно иерархии метаданных"); - + КэшПереименований = Новый Соответствие; - + УбедитьсяЧтоФайлИлиКаталогСуществует(КаталогПлоскойВыгрузки); - + Если ПустаяСтрока(КаталогИерархическойВыгрузки) Тогда ВызватьИсключение "Не задан каталог выгрузки модулей по иерархии"; КонецЕсли; - + ФайлВыгрузкиКаталог = Новый Файл(КаталогИерархическойВыгрузки); Если Не ФайлВыгрузкиКаталог.Существует() Тогда СоздатьКаталог(КаталогИерархическойВыгрузки); //ЗарегистрироватьВременныйФайл(КаталогИерархическойСтруктурыМодулей); TODO выяснить почему временный? КонецЕсли; - + ЗавершитьПроцесс_TGitCache_exe(); - + ОчиститьЦелевойКаталогВыгрузки(КаталогИерархическойВыгрузки); Переименования = Новый ТаблицаЗначений; Переименования.Колонки.Добавить("Источник"); Переименования.Колонки.Добавить("Приемник"); - - ИскатьВПодкаталогах = ?(Формат = "hierarchical", Истина, Ложь); + + ИскатьВПодкаталогах = ?(Формат = ОписаниеИерархическогоФормата, Истина, Ложь); СписокФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы(), ИскатьВПодкаталогах); Лог.Отладка("Найдено файлов выгрузки: "+СписокФайлов.Количество()+" шт."); Для Каждого Файл Из СписокФайлов Цикл - ИмяФайлаДляПереименования = Файл.Имя; + ИмяФайлаДляПереименования = Файл.Имя; Если Формат = ОписаниеИерархическогоФормата Тогда ИмяНовогоФайла = СтрЗаменить(Файл.ПолноеИмя, КаталогПлоскойВыгрузки, ""); ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="/", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); @@ -147,7 +152,7 @@ Если Файл.ЭтоКаталог() Тогда ИмяКаталога = ОбъединитьПути(КаталогИерархическойВыгрузки, ИмяНовогоФайла); ФайлКаталога = Новый Файл(ИмяКаталога); - Если ФайлКаталога.Существует() = Ложь Тогда + Если ФайлКаталога.Существует() = Ложь Тогда СоздатьКаталог(ИмяКаталога); КонецЕсли; Продолжить; @@ -156,53 +161,53 @@ Иначе Если Файл.ЭтоКаталог() Тогда ОбработатьКаталогРезультатаВыгрузки(Файл, КаталогИерархическойВыгрузки, Переименования); - Продолжить; + Продолжить; КонецЕсли; - + ИмяФайла = СкорректироватьИмяФайлаМетаданных(Файл.ИмяБезРасширения); - - //Определим длину Наименования папки, по умолчанию не больше 60 символов. + + //Определим длину Наименования папки, по умолчанию не больше 60 символов. Если СтрДлина(ИмяФайла)>144 Тогда СократитьДлинуИмениФайла(ИмяФайла, КаталогИерархическойВыгрузки); КонецЕсли; - + ИмяНовогоФайла = СтрЗаменить(ИмяФайла, ".", ПолучитьРазделительПути())+Файл.Расширение; - + КонецЕсли; - + НовыйФайл = Новый Файл(ОбъединитьПути(КаталогИерархическойВыгрузки, ИмяНовогоФайла)); НовыйКаталог = Новый Файл(НовыйФайл.Путь); Если НЕ НовыйКаталог.Существует() Тогда СоздатьКаталог(НовыйКаталог.ПолноеИмя); КонецЕсли; - + ДобавитьПереименование(Переименования,ИмяФайлаДляПереименования,ИмяНовогоФайла); - + КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); - + Если Нрег(Прав(Файл.ПолноеИмя, 5)) = ".form" Тогда КаталогФормы = ОбъединитьПути(НовыйКаталог.ПолноеИмя, НовыйФайл.ИмяБезРасширения); СоздатьКаталог(КаталогФормы); РаспаковатьКонтейнерМетаданных(НовыйФайл.ПолноеИмя, КаталогФормы) КонецЕсли; - + КонецЦикла; - + ТекстовыйДокумент = Новый ЗаписьТекста(ОбъединитьПути(КаталогИерархическойВыгрузки, "renames.txt")); Для Каждого ЭлементСтроки Из Переименования Цикл ТекстовыйДокумент.ЗаписатьСтроку(ЭлементСтроки.Источник+"-->"+СтрЗаменить(ЭлементСтроки.Приемник, "/", "\")); КонецЦикла; ТекстовыйДокумент.Закрыть(); - + КонецПроцедуры Процедура ОчиститьЦелевойКаталогВыгрузки(Знач КаталогИерархическойСтруктурыМодулей) - + СоответствиеИменФайловДляПропуска = Новый Соответствие; СоответствиеИменФайловДляПропуска.Вставить(".git", Истина); - СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаАвторов(), Истина); //Соответствие авторов и транслитерации. - СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаВерсииХранилища(), Истина); //Номер версии, может использоватся для синхронизации с хранилищем. - + СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаАвторов(), Истина); //Соответствие авторов и транслитерации. + СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаВерсииХранилища(), Истина); //Номер версии, может использоватся для синхронизации с хранилищем. + //Удалим все каталоги с файлами в папке для разбора, кроме папки, начинающейся с с точки. ЕстьОшибкаУдаления = Ложь; Для НомерПопытки = 1 По 2 Цикл @@ -210,12 +215,12 @@ Если МассивФайлов.Количество() = 0 Тогда Прервать; КонецЕсли; - + Для Каждого ЭлементМассива Из МассивФайлов Цикл Если СоответствиеИменФайловДляПропуска[ЭлементМассива.Имя] = Истина Тогда Продолжить; КонецЕсли; - + Попытка УдалитьФайлы(ЭлементМассива.ПолноеИмя); Исключение @@ -225,17 +230,17 @@ КонецЕсли; КонецПопытки; КонецЦикла; - + Если Не ЕстьОшибкаУдаления Тогда Прервать; КонецЕсли; - + КонецЦикла; - + КонецПроцедуры Процедура ОбработатьКаталогРезультатаВыгрузки(Знач Файл, Знач КаталогИерархическойСтруктурыМодулей, Знач Переименования) - Если Прав(Файл.Имя, 5) = "files" Тогда // файлы справки. + Если Прав(Файл.Имя, 5) = "files" Тогда // файлы справки. МассивФайлов = НайтиФайлы(Файл.ПолноеИмя, ПолучитьМаскуВсеФайлы()); ИмяНовогоФайла = Лев(Файл.Имя, СтрДлина(Файл.Имя)-6); ИмяНовогоФайла = СтрЗаменить(ИмяНовогоФайла, ".", ПолучитьРазделительПути())+".del"; @@ -249,8 +254,8 @@ СоздатьКаталог(НовыйФайл.ПолноеИмя); КонецЕсли; Для Каждого ЭлементЦикла Из МассивФайлов Цикл - ДобавитьПереименование(Переименования, - ОбъединитьПути(Файл.Имя, ЭлементЦикла.Имя), + ДобавитьПереименование(Переименования, + ОбъединитьПути(Файл.Имя, ЭлементЦикла.Имя), СтрЗаменить(ОбъединитьПути(НовыйФайл.ПолноеИмя, ЭлементЦикла.Имя), КаталогИерархическойСтруктурыМодулей+ПолучитьРазделительПути(), "")); КонецЦикла; КонецЕсли; @@ -261,37 +266,37 @@ Если Прав(ИмяФайла, 12) = "Форма.Модуль" Тогда ИмяФайла = Лев(ИмяФайла, СтрДлина(ИмяФайла)-12)+"МодульФормы"; КонецЕсли; - + Если Прав(ИмяФайла, 6) = ".Макет" Тогда ИмяФайла = Лев(ИмяФайла, СтрДлина(ИмяФайла)-6); КонецЕсли; - + Если Прав(ИмяФайла, 17) = ".Картинка.Picture" Тогда ИмяФайла = Лев(ИмяФайла, СтрДлина(ИмяФайла)-17); КонецЕсли; - + Если Прав(ИмяФайла, 5) = ".Form" Тогда - + КонецЕсли; - - // Для 8.3 если файл содержит всего одну точку в имени, тогда создадим папки и туда его и кинем. - // - + + // Для 8.3 если файл содержит всего одну точку в имени, тогда создадим папки и туда его и кинем. + // + Если СтрЧислоВхождений(ИмяФайла, ".") = 1 Тогда - //Увеличим наименование на Наименование объекта конфигурации описываемого. + //Увеличим наименование на Наименование объекта конфигурации описываемого. НаименованиеОбъектаМетаданных = Сред(ИмяФайла, Найти(ИмяФайла, ".")); ИмяФайла = СтрЗаменить(ИмяФайла, НаименованиеОбъектаМетаданных,НаименованиеОбъектаМетаданных+НаименованиеОбъектаМетаданных); КонецЕсли; - + Возврат ИмяФайла; - + КонецФункции Процедура СократитьДлинуИмениФайла(ИмяФайла, Знач КаталогИерархическойСтруктурыМодулей) - + КэшПереименований = Новый Соответствие; МассивИмен = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(ИмяФайла, "."); - + ИмяФайла = ""; Счетчик = 0; КоличествоВсего = МассивИмен.Количество(); @@ -299,10 +304,10 @@ ЭлементМассива = МассивИмен.Получить(Счетчик); НовоеИмя = ЭлементМассива; ДлинаИмени = СтрДлина(ЭлементМассива); - + Если ДлинаИмени > 58 Тогда Лог.Отладка("Слишком длинное имя:"+ЭлементМассива +" длина:"+ДлинаИмени); - + Если КэшПереименований.Получить(ЭлементМассива) <> Неопределено Тогда НовоеИмя = КэшПереименований.Получить(ЭлементМассива); Иначе @@ -315,16 +320,16 @@ СчетчикНовогоИмени = МассивФайловСущуствующих.Количество()+1; НовоеИмя = Лев(ЭлементМассива, 58-Разрядность-3)+"~"+ДлинаИмени+ФорматДвузначноеЧисло(Строка(СчетчикНовогоИмени)); КонецЕсли; - + КэшПереименований.Вставить(ЭлементМассива, НовоеИмя); КонецЕсли; - + Лог.Отладка("Старое имя:"+ЭлементМассива +" новое имя:"+НовоеИмя); КонецЕсли; ИмяФайла=ИмяФайла+НовоеИмя+ПолучитьРазделительПути(); КонецЦикла; ИмяФайла = ?(Прав(ИмяФайла,1)=ПолучитьРазделительПути(), Лев(ИмяФайла, СтрДлина(ИмяФайла)-1), ИмяФайла); - + КонецПроцедуры Процедура РаспаковатьКонтейнерМетаданных(Знач ФайлРаспаковки, Знач КаталогРаспаковки) @@ -332,17 +337,17 @@ Если КаталогРаспаковки = "" тогда КаталогРаспаковки = ВременныеФайлы.СоздатьКаталог(); КонецЕсли; - + СтрокаЗапуска = """"+ФайлПрограммыРаспаковки()+""" -parse """+ФайлДляРаспаковки.ПолноеИмя+""" """+КаталогРаспаковки+""""; - + ЗапуститьПриложение(СтрокаЗапуска,,Истина); - + КонецПроцедуры // Выполняет фиксацию изменений в локальном каталоге git // -Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата=Неопределено) Экспорт - +Процедура ВыполнитьКоммитГит(Знач КаталогРабочейКопии, Знач Комментарий, Знач Автор, Знач Дата=Неопределено) Экспорт + Если Дата = Неопределено Тогда Дата = ТекущаяДата(); КонецЕсли; @@ -352,10 +357,10 @@ ФайлКомментария.Записать(?(ПустаяСтрока(Комментарий), ".", Комментарий)); ФайлКомментария.Закрыть(); Лог.Информация("Текст коммита: <"+Комментарий+">"); - + КомандныйФайл = СоздатьКомандныйФайл(); ПрефиксЭкспортаПеременной = ?(ЭтоWindows, "set", "export"); - Если ЭтоWindows = Истина Тогда + Если ЭтоWindows = Истина Тогда ДобавитьВКомандныйФайл(КомандныйФайл, "cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); Иначе ДобавитьВКомандныйФайл(КомандныйФайл, "cd " + ОбернутьВКавычки(КаталогРабочейКопии)); @@ -363,21 +368,21 @@ ДобавитьВКомандныйФайл(КомандныйФайл, ПрефиксЭкспортаПеременной + " GIT_AUTHOR_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); ДобавитьВКомандныйФайл(КомандныйФайл, ПрефиксЭкспортаПеременной + " GIT_COMMITTER_DATE="+ОбернутьВКавычки(ДатаPOSIX(Дата))); ДобавитьВКомандныйФайл(КомандныйФайл, "git add -A ."); - + ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); - + авторДляГит = Автор; Если Найти(Автор, "<") <= Найти(Автор, ">") Тогда авторДляГит = Автор+" <"+Автор+"@localhost>"; // e-mail может быть удобен для поиска в связанных системах //авторДляГит = Автор+" <"+Автор+">"; - КонецЕсли; - + КонецЕсли; + // КомандаКоммита = "git commit -a --file="""+ИмяФайлаКомментария+""" --author="""+Автор+""" >"+ИмяФайлаЛогаКоммита; КомандаКоммита = "git commit -a --file="""+ИмяФайлаКомментария+""" --author="""+Автор+""" "+СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина); ДобавитьВКомандныйФайл(КомандныйФайл, КомандаКоммита); ДобавитьВКомандныйФайл(КомандныйФайл, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); - + ИмяФайлаВыполнения = ЗакрытьКомандныйФайл(КомандныйФайл); - + Если Лог.Уровень() = УровниЛога.Отладка Тогда текстФайла = ""; Если ПолучитьТекстФайла(ИмяФайлаВыполнения, текстФайла) Тогда @@ -386,11 +391,11 @@ Лог.Ошибка("ВыполнитьКоммитГит: не удалось вывести текст пакетного файла"); КонецЕсли; КонецЕсли; - + рез = ВыполнитьКомандныйФайл(КомандныйФайл); - + Лог.Информация("ВыполнитьКоммитГит: Вызов git commit вернул код <" + рез + "> "); - + Если рез <> 0 Тогда текстФайла = ""; успешно = ПолучитьТекстФайла(ИмяФайлаЛогаКоммита, текстФайла); @@ -398,17 +403,17 @@ Лог.Ошибка("ВыполнитьКоммитГит: Лог команды git commit"+Символы.ПС+текстФайла); Иначе Лог.Ошибка("ВыполнитьКоммитГит: Не удалось получить лог команды git commit"); - КонецЕсли; + КонецЕсли; КонецЕсли; ВременныеФайлы.УдалитьФайл(ИмяФайлаВыполнения); ВременныеФайлы.УдалитьФайл(ИмяФайлаКомментария); ВременныеФайлы.УдалитьФайл(ИмяФайлаЛогаКоммита); - + Если Рез <> 0 Тогда ВызватьИсключение "Коммит в git выполнить не удалось. См. лог"; КонецЕсли; - + КонецПроцедуры // Cтандартная процедура git push @@ -417,35 +422,35 @@ КомандныйФайл = СоздатьКомандныйФайл(); ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); - Если ЭтоWindows = Истина Тогда + Если ЭтоWindows = Истина Тогда ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); Иначе ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); КонецЕсли; ДобавитьВКомандныйФайл(КомандныйФайл, "git gc --auto"); - + ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git push -u"); ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); ПараметрыКоманды.Добавить("--all -v"); ПараметрыКоманды.Добавить(СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина)); - + СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); Если Лог.Уровень() = УровниЛога.Отладка Тогда сообщение = "строкаКоманды = <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; Лог.Отладка(сообщение); КонецЕсли; - + ДобавитьВКомандныйФайл(КомандныйФайл, СтрокаКоманды); ДобавитьВКомандныйФайл(КомандныйФайл, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); - + Результат = ВыполнитьКомандныйФайл(КомандныйФайл); ВывестиТекстФайла(ИмяФайлаЛогаКоммита); ЗавершитьПроцесс_TGitCache_exe(); - + Возврат Результат; - + КонецФункции // Cтандартная процедура git pull @@ -459,22 +464,22 @@ Иначе ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); КонецЕсли; - + ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git pull"); ПараметрыКоманды.Добавить("-v"); ПараметрыКоманды.Добавить(СтрЗаменить(УдаленныйРепозиторий, "%", "%%")); ПараметрыКоманды.Добавить(СуффиксПеренаправленияВывода(ИмяФайлаЛогаКоммита, Истина)); - + СтрокаКоманды = СобратьКоманднуюСтроку(ПараметрыКоманды); сообщение = "строкаКоманды = <"+?(строкаКоманды = Неопределено, "Неопределено", строкаКоманды)+">"; Лог.Отладка(сообщение); ДобавитьВКомандныйФайл(КомандныйФайл, СтрокаКоманды); ДобавитьВКомандныйФайл(КомандныйФайл, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); - + Результат = ВыполнитьКомандныйФайл(КомандныйФайл); ВывестиТекстФайла(ИмяФайлаЛогаКоммита); - + Возврат Результат; КонецФункции @@ -486,9 +491,9 @@ Файл = Новый КомандныйФайл(); Файл.Открыть(Путь); - + Возврат Файл; - + КонецФункции Процедура ДобавитьВКомандныйФайл(Знач ДескрипторКомандногоФайла, Знач Команда) @@ -500,10 +505,10 @@ КонецФункции Функция ЗакрытьКомандныйФайл(Знач ДескрипторКомандногоФайла) - + Путь = ДескрипторКомандногоФайла.Закрыть(); Возврат Путь; - + КонецФункции ////////////////////////////////////////////////////////////////////////// @@ -513,12 +518,12 @@ // Устанавливает параметры авторизации в хранилище 1С, если выгрузка версии выполняется средствами платформы // Процедура УстановитьАвторизациюВХранилищеКонфигурации(Знач Логин, Знач Пароль, Знач ВерсияПлатформы = "") - + мАвторизацияВХранилищеСредствами1С = Новый Структура; мАвторизацияВХранилищеСредствами1С.Вставить("Логин" , Логин); мАвторизацияВХранилищеСредствами1С.Вставить("Пароль", Пароль); мАвторизацияВХранилищеСредствами1С.Вставить("ВерсияПлатформы", ВерсияПлатформы); - + КонецПроцедуры // Выполняет чтение таблицы VERSIONS из хранилища 1С @@ -526,7 +531,7 @@ // Возвращаемое значение: ТаблицаЗначений // Функция ПрочитатьТаблицуИсторииХранилища(Знач ФайлХранилища) Экспорт - + ЧтениеБазыДанных = Новый ЧтениеТаблицФайловойБазыДанных; ЧтениеБазыДанных.ОткрытьФайл(ФайлХранилища); Попытка @@ -535,20 +540,20 @@ ЧтениеБазыДанных.ЗакрытьФайл(); ВызватьИсключение; КонецПопытки; - + ЧтениеБазыДанных.ЗакрытьФайл(); - + ТаблицаВерсий = КонвертироватьТаблицуВерсийИзФорматаБД(ТаблицаБД); ТаблицаВерсий.Сортировать("НомерВерсии"); - + Возврат ТаблицаВерсий; - + КонецФункции // Считывает таблицу USERS пользователей хранилища // Функция ПрочитатьТаблицуПользователейХранилища(Знач ФайлХранилища) Экспорт - + ЧтениеБазыДанных = Новый ЧтениеТаблицФайловойБазыДанных; ЧтениеБазыДанных.ОткрытьФайл(ФайлХранилища); Попытка @@ -557,20 +562,20 @@ ЧтениеБазыДанных.ЗакрытьФайл(); ВызватьИсключение; КонецПопытки; - + ЧтениеБазыДанных.ЗакрытьФайл(); - + Возврат КонвертироватьТаблицуПользователейИзФорматаБД(ТаблицаБД); - + КонецФункции // Считывает из хранилища историю коммитов с привязкой к пользователям // Функция ПрочитатьИзХранилищаИсториюКоммитовСАвторами(Знач ФайлХранилища) Экспорт - + Перем ТаблицаВерсий; Перем ТаблицаПользователей; - + ЧтениеБазыДанных = Новый ЧтениеТаблицФайловойБазыДанных; ЧтениеБазыДанных.ОткрытьФайл(ФайлХранилища); Попытка @@ -581,29 +586,29 @@ ЧтениеБазыДанных.ЗакрытьФайл(); ВызватьИсключение; КонецПопытки; - + ЧтениеБазыДанных.ЗакрытьФайл(); - + ТаблицаВерсий = КонвертироватьТаблицуВерсийИзФорматаБД(ТаблицаВерсий); ТаблицаПользователей = КонвертироватьТаблицуПользователейИзФорматаБД(ТаблицаПользователей); - + ДополнитьТаблицуВерсийИменамиАвторов(ТаблицаВерсий, ТаблицаПользователей); ТаблицаВерсий.Сортировать("НомерВерсии"); - + Возврат ТаблицаВерсий; - + КонецФункции // Прописывает в таблицы пользователей и версий информацию о git auth вида user // Процедура ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(Знач ТаблицаХранилища, Знач КаталогРепо) Экспорт - + ПутьКФайлуСопоставления = ОбъединитьПути(КаталогРепо, ИмяФайлаАвторов()); Файл = Новый Файл(ПутьКФайлуСопоставления); ТаблицаСопоставления = ПрочитатьФайлАвторовГитВТаблицуПользователей(ОбъединитьПути(КаталогРепо, ИмяФайлаАвторов())); - + Для Каждого Строка Из ТаблицаХранилища Цикл - + СтрокаПользователя = ТаблицаСопоставления.Найти(строка.Автор, "Автор"); Если СтрокаПользователя = Неопределено Тогда СтрокаСообщения = "Пользователю хранилища <%1> не сопоставлен пользователь git. Использую сопоставление по умолчанию"; @@ -611,20 +616,20 @@ ПредставлениеАвтора = СтроковыеФункции.ПодставитьПараметрыВСтроку("%1 <%1@%2>", строка.Автор, Строка(ДоменПочтыДляGit())); Иначе ПредставлениеАвтора = строкаПользователя.ПредставлениеАвтора; - КонецЕсли; - + КонецЕсли; + Строка.ПредставлениеАвтора = ПредставлениеАвтора; - + КонецЦикла; - + КонецПроцедуры Функция КонвертироватьТаблицуВерсийИзФорматаБД(Знач ТаблицаБД) - + ТаблицаВерсий = НоваяТаблицаИсторииВерсий(); - + Для Каждого СтрокаБД Из ТаблицаБД Цикл - + НоваяСтрока = ТаблицаВерсий.Добавить(); НоваяСтрока.НомерВерсии = Число(СтрокаБД.VERNUM); НоваяСтрока.ГУИД_Автора = СтрокаБД.USERID; @@ -635,25 +640,25 @@ Дата = Дата(Дата); НоваяСтрока.Дата = Дата; НоваяСтрока.Комментарий = СтрокаБД.COMMENT; - + КонецЦикла; - + Возврат ТаблицаВерсий; КонецФункции Функция КонвертироватьТаблицуПользователейИзФорматаБД(Знач ТаблицаБД) ТаблицаПользователей = НоваяТаблицаПользователейХранилища(); - + Для Каждого СтрокаБД Из ТаблицаБД Цикл - + НоваяСтрока = ТаблицаПользователей.Добавить(); НоваяСтрока.Автор = СтрокаБД.NAME; НоваяСтрока.ГУИД_Автора = СтрокаБД.USERID; - + КонецЦикла; - + Возврат ТаблицаПользователей; - + КонецФункции Функция НоваяТаблицаИсторииВерсий() @@ -666,24 +671,24 @@ Таблица.Колонки.Добавить("Дата"); Таблица.Колонки.Добавить("Комментарий"); Таблица.Колонки.Добавить("ПредставлениеАвтора"); - + Возврат Таблица; КонецФункции Функция НоваяТаблицаПользователейХранилища() - + Таблица = Новый ТаблицаЗначений; Таблица.Колонки.Добавить("Автор"); Таблица.Колонки.Добавить("ГУИД_Автора"); Таблица.Колонки.Добавить("ПредставлениеАвтора"); - + Возврат Таблица; - + КонецФункции Процедура ДополнитьТаблицуВерсийИменамиАвторов(Знач ТаблицаВерсий, Знач ТаблицаПользователей) - + Для Каждого Строка Из ТаблицаВерсий Цикл строкаПользователя = ТаблицаПользователей.Найти(Строка.ГУИД_Автора, "ГУИД_Автора"); Если строкаПользователя = Неопределено Тогда @@ -691,9 +696,9 @@ Лог.Ошибка(СтроковыеФункции.ПодставитьПараметрыВСтроку(Сообщение, строка.НомерВерсии, строка.Комментарий, строка.ГУИД_Автора)); Иначе строка.Автор = строкаПользователя.Автор; - КонецЕсли; + КонецЕсли; КонецЦикла; - + КонецПроцедуры // Генерирует файл соответствия пользователей хранилища 1С и git @@ -702,15 +707,15 @@ резПутьКХМЛФайлуВерсийХранилища1С = ""; резПутьКХМЛФайлуПользователейХранилища1С = ""; - + Лог.Отладка("Формируем первичный файл авторов: | Файл хранилища: " + ИмяФайлаХранилища + " | Выходной файл: " + ВыходнойФайл); - + ТаблицаПользователейХранилища = ПрочитатьТаблицуПользователейХранилища(ИмяФайлаХранилища); - + ЗаписатьТаблицуПользователейВФайлАвторовGit(ТаблицаПользователейХранилища, ВыходнойФайл, ДоменПочтыДляGit()); - + КонецПроцедуры Процедура ЗаписатьТаблицуПользователейВФайлАвторовGit(Знач ТаблицаПользователейХранилища, Знач ВыходнойФайл, Знач ДоменПочтыДляGit) @@ -722,21 +727,21 @@ СтрокаДляЗаписи = СтроковыеФункции.ПодставитьПараметрыВСтроку(ШаблонЗаписи, Запись.Автор, ДоменПочтыДляGit); ЗаписьФайла.ЗаписатьСтроку(СтрокаДляЗаписи); КонецЦикла; - + ЗаписьФайла.Закрыть(); Исключение ОсвободитьОбъект(ЗаписьФайла); ВызватьИсключение; КонецПопытки; - + КонецПроцедуры // Выполняет клонирование удаленного репо // Функция КлонироватьРепозитарий(Знач КаталогЛокальнойКопии, Знач URLРепозитария) Экспорт - + Батник = СоздатьКомандныйФайл(); - Если ЭтоWindows Тогда + Если ЭтоWindows Тогда ДобавитьВКомандныйФайл(Батник, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", КаталогЛокальнойКопии)); Иначе ДобавитьВКомандныйФайл(Батник, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", КаталогЛокальнойКопии)); @@ -747,24 +752,24 @@ ПараметрыКоманды.Добавить(URLРепозитария); ПараметрыКоманды.Добавить(ОбернутьВКавычки(КаталогЛокальнойКопии)); ПараметрыКоманды.Добавить(СуффиксПеренаправленияВывода(ФайлЛога, Истина)); - + КоманднаяСтрока = СобратьКоманднуюСтроку(ПараметрыКоманды); Лог.Отладка(КоманднаяСтрока); ДобавитьВКомандныйФайл(Батник, КоманднаяСтрока); ДобавитьВКомандныйФайл(Батник, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); - + РезультатКлонирования = ВыполнитьКомандныйФайл(Батник); - + ВывестиТекстФайла(ФайлЛога); ВременныеФайлы.УдалитьФайл(ФайлЛога); Возврат РезультатКлонирования; - + КонецФункции // Выполняет инициализацию репо // Функция ИнициализироватьРепозитарий(Знач КаталогЛокальнойКопии) Экспорт - + Батник = СоздатьКомандныйФайл(); Лог.Отладка(КаталогЛокальнойКопии); ДопСтрокаПерехода = ?(ЭтоWindows, "/d", ""); @@ -773,85 +778,85 @@ ПараметрыКоманды = Новый Массив; ПараметрыКоманды.Добавить("git init"); ПараметрыКоманды.Добавить(СуффиксПеренаправленияВывода(ФайлЛога, Истина)); - + КоманднаяСтрока = СобратьКоманднуюСтроку(ПараметрыКоманды); Лог.Отладка(КоманднаяСтрока); ДобавитьВКомандныйФайл(Батник, КоманднаяСтрока); ДобавитьВКомандныйФайл(Батник, "exit " + ?(ЭтоWindows, "/b %ERRORLEVEL%", "$#")); Результат = ВыполнитьКомандныйФайл(Батник); - + ВывестиТекстФайла(ФайлЛога); ВременныеФайлы.УдалитьФайл(ФайлЛога); Возврат Результат; - + КонецФункции // Определяет необходимость синхронизации хранилища и репо GIT. // Функция ТребуетсяСинхронизироватьХранилищеСГит(Знач ФайлХранилища, Знач ЛокальныйКаталогГит) Экспорт - + ТаблицаВерсий = ПрочитатьТаблицуИсторииХранилища(ФайлХранилища); ТекущаяВерсия = НомерСинхронизированнойВерсии(ЛокальныйКаталогГит); МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюВХранилище(ТаблицаВерсий); - + Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия); Лог.Информация("Номер последней версии в хранилище: " + МаксимальнаяВерсияДляРазбора); - + Возврат ТекущаяВерсия < МаксимальнаяВерсияДляРазбора; - + КонецФункции // Основная функция синхронизации. Перемещает в git набор коммитов хранилища 1С // Процедура СинхронизироватьХранилищеКонфигурацийСГит(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = "hierarchical") Экспорт - + Лог.Информация("Начало синхронизации с git"); ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища); ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии); ТекущаяВерсия = НомерСинхронизированнойВерсии(КаталогРабочейКопии); Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия); СледующаяВерсия = ТекущаяВерсия + 1; - + МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюСУчетомОграниченияСверху(ТаблицаИсторииХранилища, ТекущаяВерсия, КонечнаяВерсия); - Лог.Информация("Номер последней версии в хранилище: " + МаксимальнаяВерсияДляРазбора); - + Лог.Информация("Номер последней версии в хранилище: " + МаксимальнаяВерсияДляРазбора); + Пока СледующаяВерсия <= МаксимальнаяВерсияДляРазбора Цикл - + СтрокаВерсии = ТаблицаИсторииХранилища.Найти(СледующаяВерсия, "НомерВерсии"); Если СтрокаВерсии <> Неопределено Тогда - + Если ПустаяСтрока(СтрокаВерсии.ПредставлениеАвтора) Тогда ВызватьИсключение "Нашли следующую версию, а автор не прописан "+СледующаяВерсия + " автор "+СтрокаВерсии.Автор; КонецЕсли; - + Лог.Отладка("Фиксируем в файле VERSION версию " + СледующаяВерсия); ЗаписатьФайлВерсийГит(КаталогРабочейКопии, СледующаяВерсия); Попытка Лог.Информация("Получаем исходники для версии " + СледующаяВерсия); - + РазложитьМодулиПоНомеруВерсииХранилища1С(КаталогРабочейКопии, ФайлХранилища, СледующаяВерсия, Формат); ВыполнитьКоммитГит(КаталогРабочейКопии, СтрокаВерсии.Комментарий, СтрокаВерсии.ПредставлениеАвтора, СтрокаВерсии.Дата); - + Исключение Лог.Отладка("Откатываем файл VERSION после ошибки"); ЗаписатьФайлВерсийГит(КаталогРабочейКопии, ТекущаяВерсия); ВызватьИсключение; КонецПопытки; - - ТекущаяВерсия = СледующаяВерсия; + + ТекущаяВерсия = СледующаяВерсия; КонецЕсли; - + СледующаяВерсия = СледующаяВерсия + 1; - + КонецЦикла; - + ЗавершитьПроцесс_TGitCache_exe(); - + КонецПроцедуры Функция ОпределитьМаксимальнуюВерсиюСУчетомОграниченияСверху(Знач ТаблицаИсторииХранилища, Знач ТекущаяВерсия, Знач МаксимальнаяВерсия) - + МаксимальнаяВерсияДляРазбора = 0; ЧислоВерсийПлюс = 0; @@ -862,23 +867,23 @@ ЧислоВерсийПлюс = 0; КонецПопытки; КонецЕсли; - + Если ЧислоВерсийПлюс>0 Тогда МаксимальнаяВерсияДляРазбора = ТекущаяВерсия + ЧислоВерсийПлюс; Иначе МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюВХранилище(ТаблицаИсторииХранилища); КонецЕсли; - + Возврат МаксимальнаяВерсияДляРазбора; - + КонецФункции Функция НомерСинхронизированнойВерсии(Знач КаталогВыгрузки) - + ПутьФайлаВерсий = ОбъединитьПути(КаталогВыгрузки, ИмяФайлаВерсииХранилища()); - + ТекущаяВерсия = ПрочитатьФайлВерсийГит(ПутьФайлаВерсий); - Если ТекущаяВерсия <> Неопределено Тогда + Если ТекущаяВерсия <> Неопределено Тогда Попытка ТекущаяВерсия=Число(ТекущаяВерсия); Исключение @@ -887,17 +892,17 @@ Иначе ТекущаяВерсия = 0; КонецЕсли; - + Возврат ТекущаяВерсия; - + КонецФункции Функция ОпределитьМаксимальнуюВерсиюВХранилище(Знач ТаблицаИсторииХранилища) - + Если ТаблицаИсторииХранилища.Количество() = 0 Тогда Возврат 0; КонецЕсли; - + МаксимальнаяВерсия = Число(ТаблицаИсторииХранилища[0].НомерВерсии); Для Сч = 1 По ТаблицаИсторииХранилища.Количество()-1 Цикл ЧислоВерсии = Число(ТаблицаИсторииХранилища[Сч].НомерВерсии); @@ -905,9 +910,9 @@ МаксимальнаяВерсия = ЧислоВерсии; КонецЕсли; КонецЦикла; - + Возврат МаксимальнаяВерсия; - + КонецФункции Процедура РазложитьМодулиПоНомеруВерсииХранилища1С(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НомерВерсии, Знач Формат) @@ -924,23 +929,23 @@ ВременныеФайлы.УдалитьФайл(ВремКаталог); ВызватьИсключение; КонецПопытки; - + ВременныеФайлы.УдалитьФайл(ВремКаталог); Иначе // TODO: предусмотреть выгрузку версии штатным запуском команды Конфигуратора ВызватьИсключение "Некорректное имя файла хранилища: " + ФайлХранилища.ПолноеИмя; КонецЕсли; - + КонецПроцедуры Процедура ПоНомеруВерсииСохранитьКонфигурациюСредствамиTool1CD(Знач ПутьКФайлуХранилища1С, Знач ВыходнойФайл, Знач НомерВерсииХранилища) - + Логирование.ПолучитьЛог("oscript.lib.tool1cd").УстановитьУровень(Лог.Уровень()); Лог.Отладка("Получаем файл версии <"+НомерВерсииХранилища+"> из хранилища: " + ПутьКФайлуХранилища1С); ЧтениеХранилища = Новый ЧтениеХранилищаКонфигурации; ЧтениеХранилища.ВыгрузитьВерсиюКонфигурации(ПутьКФайлуХранилища1С, ВыходнойФайл, НомерВерсииХранилища); Лог.Отладка("Версия хранилища выгружена"); - + КонецПроцедуры Функция ИмяФайлаВыгрузкиВерсииХранилища(Знач Каталог, Знач НомерВерсии) @@ -953,15 +958,15 @@ Если НЕ Файл.Существует() Тогда Возврат; КонецЕсли; - + Если Кодировка = Неопределено Тогда Кодировка = "utf-8"; КонецЕсли; - + ЧТ = Новый ЧтениеТекста(ИмяФайла, Кодировка); СтрокаФайла = ЧТ.Прочитать(); ЧТ.Закрыть(); - + Лог.Информация(СтрокаФайла); КонецПроцедуры @@ -971,20 +976,20 @@ КонецФункции Функция СобратьКоманднуюСтроку(Знач ПереченьПараметров) - + СтрокаЗапуска = ""; Для Каждого Параметр Из ПереченьПараметров Цикл - + СтрокаЗапуска = СтрокаЗапуска + " " + Параметр; - + КонецЦикла; - + Возврат СтрокаЗапуска; - + КонецФункции Функция ПолучитьТекстФайла(ИмяФайла, резТекстФайла = "") - + // проверим есть ли файл Файл = Новый Файл(ИмяФайла); Если НЕ Файл.Существует() Тогда @@ -994,7 +999,7 @@ ФайлОтчета = Новый ЧтениеТекста(ИмяФайла); МассивСтрок = Новый Массив; - + Попытка Стр = ""; Пока Стр <> Неопределено Цикл @@ -1009,8 +1014,8 @@ Если МассивСтрок.Количество() = 0 Тогда Лог.Информация("Файл пуст."+ИмяФайла); Возврат Ложь; - КонецЕсли; - + КонецЕсли; + Лог.Отладка("В файле найдено <"+МассивСтрок.Количество()+"> строк."+ИмяФайла); // вывести если строки не нашлись текстФайла = "+---/ "+ИмяФайла+" /-------------------------------"; @@ -1035,24 +1040,24 @@ Функция ФайлПрограммыРаспаковки() Если мФайлПрограммыРаспаковки = Неопределено Тогда - Если ЭтоWindows = Истина Тогда + Если ЭтоWindows = Истина Тогда КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\bin"); ФайлПрограммы = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "UnpackV8.exe")); Если Не ФайлПрограммы.Существует() Тогда ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружен файл программы распаковки: <%1>", ФайлПрограммы.ПолноеИмя); КонецЕсли; - + ФайлZLib = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "zlib1.dll")); Если Не ФайлZLib.Существует() Тогда ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружена библиотека zlib1: <%1>", ФайлZLib.ПолноеИмя); КонецЕсли; мФайлПрограммыРаспаковки = ФайлПрограммы.ПолноеИмя; - Иначе + Иначе мФайлПрограммыРаспаковки = "v8unpack"; //установка происходит из репозитариев, поэтому уже в переменной path КонецЕсли; - + КонецЕсли; - + Возврат мФайлПрограммыРаспаковки; КонецФункции @@ -1065,8 +1070,8 @@ Возврат "VERSION" КонецФункции -Процедура ЗаписатьФайлВерсийГит(Знач КаталогФайлаВерсий, Знач Версия = "") Экспорт - +Процедура ЗаписатьФайлВерсийГит(Знач КаталогФайлаВерсий, Знач Версия = "") Экспорт + ПутьКФайлуВерсий = ОбъединитьПути(КаталогФайлаВерсий, ИмяФайлаВерсииХранилища()); Лог.Отладка("ПутьКФайлуВерсий =<"+ПутьКФайлуВерсий+">"); Попытка @@ -1080,27 +1085,27 @@ КонецЕсли; ВызватьИсключение; КонецПопытки; - + КонецПроцедуры Функция ПрочитатьФайлВерсийГит(Знач ПутьКФайлуВерсий) - + Перем Версия; - + Если Не Новый Файл(ПутьКФайлуВерсий).Существует() Тогда ВызватьИсключение "Файл с версией ГИТ <"+ПутьКФайлуВерсий+"> не существует"; КонецЕсли; - + ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ПутьКФайлуВерсий); - Пока ЧтениеXML.Прочитать() Цикл - Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "VERSION" Тогда + Пока ЧтениеXML.Прочитать() Цикл + Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И ЧтениеXML.Имя = "VERSION" Тогда Если Не ЧтениеXML.Прочитать() Тогда ВызватьИсключение "Чтение файла версий, у элемента Version нет текста"; КонецЕсли; - + Если Не ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда ВызватьИсключение "Чтение файла версий, у элемента Version нет текста"; КонецЕсли; @@ -1117,7 +1122,7 @@ ЧтениеXML.Закрыть(); Возврат Версия; - + КонецФункции Функция ДобавитьПереименование(Знач Переименования, Знач Источник, Знач Приемник) @@ -1125,13 +1130,13 @@ СтрокаПереименования = Переименования.Добавить(); СтрокаПереименования.Источник = Источник; СтрокаПереименования.Приемник = Приемник; - + Возврат СтрокаПереименования; КонецФункции Функция ПрочитатьФайлАвторовГитВТаблицуПользователей(Знач ПутьКФайлуАвторов) Экспорт - + Если НЕ ЗначениеЗаполнено(ПутьКФайлуАвторов) Тогда Возврат Неопределено; КонецЕсли; @@ -1143,36 +1148,36 @@ Пользователи = НоваяТаблицаПользователейХранилища(); - Попытка + Попытка ТекстовыйФайл = Новый ЧтениеТекста(ПутьКФайлуАвторов,"utf-8"); СтрокаФайла = ""; Пока СтрокаФайла <> Неопределено Цикл СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); Индекс = Найти(СтрокаФайла, "="); Если Индекс > 0 Тогда - + Ключ = Лев(СтрокаФайла, Индекс-1); АвторПредставление = Сред(СтрокаФайла, Индекс+1); - + НоваяСтрока = Пользователи.Добавить(); НоваяСтрока.ПредставлениеАвтора = АвторПредставление; НоваяСтрока.Автор = Ключ; КонецЕсли; КонецЦикла; - + Исключение Если ТекстовыйФайл <> Неопределено Тогда ОсвободитьОбъект(ТекстовыйФайл); КонецЕсли; ВызватьИсключение; КонецПопытки; - + Если ТекстовыйФайл <> Неопределено Тогда ОсвободитьОбъект(ТекстовыйФайл); КонецЕсли; - + Возврат Пользователи; - + КонецФункции @@ -1181,36 +1186,36 @@ Функция ДатаPOSIX(Знач Дата) - + Возврат "" + Год(Дата) + "-" + ФорматДвузначноеЧисло(Месяц(Дата)) + "-" + ФорматДвузначноеЧисло(День(Дата)) + " " + ФорматДвузначноеЧисло(Час(Дата)) + ":" + ФорматДвузначноеЧисло(Минута(Дата)) + ":" + ФорматДвузначноеЧисло(Секунда(Дата)); - + КонецФункции Процедура ДополнитьМассив(Знач Приемник, Знач Источник) - + Для Каждого Элемент Из Источник Цикл Приемник.Добавить(Элемент); КонецЦикла; - + КонецПроцедуры Процедура УбедитьсяЧтоФайлИлиКаталогСуществует(Знач Путь) - + Файл = Новый Файл(Путь); Если Не Файл.Существует() Тогда ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Файл <%1> должен существовать", Путь); КонецЕсли; - + КонецПроцедуры -Функция ЗапуститьПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, Знач ТекущийКаталог = "\.") - +Функция ЗапуститьПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, Знач ТекущийКаталог = "\.") + рез = -1; Если НЕ ЭтоWindows И ТекущийКаталог = "\." Тогда ТекущийКаталог = "./"; КонецЕсли; - + Попытка КодВозврата = ""; ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); @@ -1224,13 +1229,13 @@ рез = КодВозврата; КонецЕсли; КонецПопытки; - + Возврат рез; - + КонецФункции // ЗапуститьПриложениеИДождатьсяЗавершения() Процедура ЗавершитьПроцесс_TGitCache_exe() - Если ЭтоWindows Тогда + Если ЭтоWindows Тогда СтрокаКоманды = "taskkill /im TGitCache.exe /T /F"; Лог.Отладка("ЗавершитьПроцесс_TGitCache_exe: команда "+ СтрокаКоманды); @@ -1243,7 +1248,7 @@ Если СтрДлина(С) < 2 Тогда С = "0" + С; КонецЕсли; - + Возврат С; КонецФункции @@ -1259,4 +1264,4 @@ ДоменПочтыДляGitПоУмолчанию = "localhost"; ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "cmd-builder.os"), "КомандныйФайл"); -ОписаниеИерархическогоФормата = "hierarchical"; \ No newline at end of file +ОписаниеИерархическогоФормата = "hierarchical"; From b80fb60ed493fd7a1735779f31bdd02785f8a9e6 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Sun, 13 Dec 2015 21:20:48 +0300 Subject: [PATCH 13/60] =?UTF-8?q?bugfix:=20=D0=9A=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D0=B0=20"opm=20app"=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20=D0=BD=D0=B5=D0=B2=D0=B5=D1=80=D0=BD=D1=8B=D0=B9?= =?UTF-8?q?=20=D1=84=D0=B0=D0=B9=D0=BB=20shell-=D1=81=D0=BA=D1=80=D0=B8?= =?UTF-8?q?=D0=BF=D1=82=D0=B0=20=D0=BD=D0=B0=20=D0=BB=D0=B8=D0=BD=D1=83?= =?UTF-8?q?=D0=BA=D1=81=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\260\320\237\320\260\320\272\320\265\321\202\320\260.os" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/src/opm/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" "b/src/opm/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" index 809c701..3b151ea 100644 --- "a/src/opm/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" +++ "b/src/opm/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\237\320\260\320\272\320\265\321\202\320\260.os" @@ -300,9 +300,9 @@ ФайлЗапуска.Закрыть(); Иначе // TODO: проверить - ФайлЗапуска = Новый ЗаписьТекста(ОбъединитьПути(Каталог, ИмяСкриптаЗапуска)); + ФайлЗапуска = Новый ЗаписьТекста(ОбъединитьПути(Каталог, ИмяСкриптаЗапуска), КодировкаТекста.UTF8NoBOM); ФайлЗапуска.ЗаписатьСтроку("#!/bin/bash"); - ФайлЗапуска.ЗаписатьСтроку("/usr/bin/oscript """ + ПутьФайлаПриложения + " $@"""); + ФайлЗапуска.ЗаписатьСтроку("oscript """ + ПутьФайлаПриложения + """ """"$@"""); ФайлЗапуска.Закрыть(); КонецЕсли; From 55819d81cbc6a08bb8a89ba784270e47230f3237 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 14 Dec 2015 17:34:41 +0300 Subject: [PATCH 14/60] =?UTF-8?q?=D0=A1=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20?= =?UTF-8?q?=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=84?= =?UTF-8?q?=D0=B8=D0=B3=D0=BE=D0=B2=20=D1=81=D1=82=D0=B0=D1=80=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/lib.config | 1 + src/v8runner/src/v8config-file.os | 79 ++++++++++++++++++ src/v8runner/tests/config-reader.os | 51 +++++++++++ .../tests/fixtures/allUsers_1CEStart.cfg | Bin 0 -> 298 bytes src/v8runner/tests/fixtures/user_1CEStart.cfg | 5 ++ 5 files changed, 136 insertions(+) create mode 100644 src/v8runner/src/v8config-file.os create mode 100644 src/v8runner/tests/config-reader.os create mode 100644 src/v8runner/tests/fixtures/allUsers_1CEStart.cfg create mode 100644 src/v8runner/tests/fixtures/user_1CEStart.cfg diff --git a/src/v8runner/lib.config b/src/v8runner/lib.config index 5d74210..61e35b7 100644 --- a/src/v8runner/lib.config +++ b/src/v8runner/lib.config @@ -1,3 +1,4 @@  + \ No newline at end of file diff --git a/src/v8runner/src/v8config-file.os b/src/v8runner/src/v8config-file.os new file mode 100644 index 0000000..2c70c48 --- /dev/null +++ b/src/v8runner/src/v8config-file.os @@ -0,0 +1,79 @@ +///////////////////////////////////////////////////////////////////////////// +// +// Чтение конфигурационных файлов стартера 1С +// +///////////////////////////////////////////////////////////////////////////// + +Перем мСодержимое; + +///////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС +// + +Процедура Открыть(Знач Путь) Экспорт + + ЧтениеТекста = Новый ЧтениеТекста(Путь); + + мСодержимое = Новый Соответствие; + + СтрокаФайла = ""; + Пока Не СтрокаФайла = Неопределено Цикл + + СтрокаФайла = ЧтениеТекста.ПрочитатьСтроку(); + Если СтрокаФайла = Неопределено Тогда + Прервать; + КонецЕсли; + + Данные = КлючИЗначение(СтрокаФайла); + Если Данные = Неопределено Тогда + Продолжить; + КонецЕсли; + + ДобавитьПараметр(Данные); + + КонецЦикла; + +КонецПроцедуры + +Функция ПолучитьСписок(Знач Ключ) Экспорт + + Возврат мСодержимое[ВРЕГ(Ключ)]; + +КонецФункции + +Функция ПолучитьЗначение(Знач Ключ) Экспорт + + Массив = мСодержимое[ВРЕГ(Ключ)]; + Если ТипЗнч(Массив) = Тип("Массив") и Массив.Количество() > 0 Тогда + Возврат Массив[0]; + Иначе + Возврат Неопределено; + КонецЕсли; + +КонецФункции + +////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры + +Функция КлючИЗначение(Знач СтрокаТекста) + + Поз = Найти(СтрокаТекста, "="); + Если Поз = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат Новый Структура("Ключ,Значение", ВРЕГ(Лев(СтрокаТекста, Поз-1)), Сред(СтрокаТекста, Поз+1)); + +КонецФункции + +Процедура ДобавитьПараметр(Знач КлючИЗначение) + + ТекЗначение = мСодержимое[КлючИЗначение.Ключ]; + Если ТекЗначение = Неопределено Тогда + ТекЗначение = Новый Массив; + мСодержимое[КлючИЗначение.Ключ] = ТекЗначение; + КонецЕсли; + + ТекЗначение.Добавить(КлючИЗначение.Значение); + +КонецПроцедуры diff --git a/src/v8runner/tests/config-reader.os b/src/v8runner/tests/config-reader.os new file mode 100644 index 0000000..72ddec0 --- /dev/null +++ b/src/v8runner/tests/config-reader.os @@ -0,0 +1,51 @@ + +#Использовать ".." + +Перем юТест; + +Функция ПолучитьСписокТестов(Тестирование) Экспорт + + юТест = Тестирование; + + СписокТестов = Новый Массив; + СписокТестов.Добавить("Тест_Должен_ПрочитатьКонфигурационныйФайлИзКаталогаВсехПользователей"); + СписокТестов.Добавить("Тест_Должен_ПрочитатьКонфигурационныйФайлИзКаталогаТекущегоПользователя"); + + Возврат СписокТестов; + +КонецФункции + +Процедура Тест_Должен_ПрочитатьКонфигурационныйФайлИзКаталогаВсехПользователей() Экспорт + + ПутьЗаготовки = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "allUsers_1CEStart.cfg"); + + Конфиг = Новый КонфигурацияСтартера(); + Конфиг.Открыть(ПутьЗаготовки); + + Список = Конфиг.ПолучитьСписок("InstalledLocation"); + + юТест.ПроверитьРавенство("C:\Program Files (x86)\1cv82", Список[0]); + юТест.ПроверитьРавенство("C:\Program Files (x86)\1cv8", Список[1]); + + юТест.ПроверитьРавенство("C:\Program Files (x86)\1cv82", Конфиг.ПолучитьЗначение("InstalledLocation")); + юТест.ПроверитьРавенство("DESIGNERALLCLIENTS=1 LANGUAGES=RU", Конфиг.ПолучитьЗначение("InstallComponents")); + +КонецПроцедуры + +Процедура Тест_Должен_ПрочитатьКонфигурационныйФайлИзКаталогаТекущегоПользователя() Экспорт + + ПутьЗаготовки = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "user_1CEStart.cfg"); + + Конфиг = Новый КонфигурацияСтартера(); + Конфиг.Открыть(ПутьЗаготовки); + + юТест.ПроверитьРавенство("C:\Program Files (x86)\1cv8", Конфиг.ПолучитьЗначение("InstalledLocation")); + юТест.ПроверитьРавенство("1", Конфиг.ПолучитьЗначение("UseHWLicenses")); + юТест.ПроверитьРавенство("1", Конфиг.ПолучитьЗначение("AppAutoInstallLastVersion")); + + Список = Конфиг.ПолучитьСписок("CommonInfoBases"); + юТест.ПроверитьРавенство("Z:\1C_distr\common.auto.test.v8bases.v8i", Список[0]); + юТест.ПроверитьРавенство("Z:\1C_distr\common.auto.work.v8bases.v8i", Список[1]); + + +КонецПроцедуры diff --git a/src/v8runner/tests/fixtures/allUsers_1CEStart.cfg b/src/v8runner/tests/fixtures/allUsers_1CEStart.cfg new file mode 100644 index 0000000000000000000000000000000000000000..7073fc2f9272bef1b9bf0d0a47d516f6def14622 GIT binary patch literal 298 zcmcJKF$%&^5JX=sc!!i)Y9S(|2r&jBh^Xmof(8*x6cfbLtIxF7@?rnX?9MX#el4kK zXeqe(N{(b)ImlbiqMDGH8GF{; Date: Mon, 14 Dec 2015 18:16:11 +0300 Subject: [PATCH 15/60] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D1=8B=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 125 +++++++++++++++++++++++------------ 1 file changed, 83 insertions(+), 42 deletions(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 0338fba..4907784 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -254,58 +254,58 @@ КонецЕсли; Если ЭтоWindows = Истина Тогда - путьProgramFiles = "C:\Program Files (x86)\"; - файлProgramFiles = Новый Файл(путьProgramFiles); - Если Не файлProgramFiles.Существует() Тогда - путьProgramFiles = "C:\Program Files\"; - файлProgramFiles = Новый Файл(путьProgramFiles); - Если Не файлProgramFiles.Существует() Тогда - ВызватьИсключение "Должен существовать путь к Program Files или Program Files (86)"; - КонецЕсли; - - КонецЕсли; - + СписокСтрок = РазложитьСтрокуВМассивПодстрок(ВерсияПлатформы, "."); Если СписокСтрок.Количество() < 2 Тогда ВызватьИсключение "Маска версии платформы должна содержать, как минимум, минорную и мажорную версию, т.е. Maj.Min[.Release][.Build]"; КонецЕсли; - - МажорнаяВерсия = СписокСтрок[0]; - МинорнаяВерсия = СписокСтрок[1]; - - Если МинорнаяВерсия = "3" Тогда // 8.3 - путьКПлатформе = путьProgramFiles + "1cv8\"; - ИначеЕсли МинорнаяВерсия = "2" Тогда // 8.2 - путьКПлатформе = путьProgramFiles + "1cv82\"; - ИначеЕсли МинорнаяВерсия = "1" Тогда // 8.1 - путьКПлатформе = путьProgramFiles + "1cv81\"; - Иначе - ВызватьИсключение "Неверная версия платформы <"+ВерсияПлатформы+">"; - КонецЕсли; - - МассивФайлов = НайтиФайлы(путьКПлатформе, версияПлатформы+"*"); - Если МассивФайлов.Количество() = 0 Тогда - ВызватьИсключение "Не найден путь к платформе 1С <"+версияПлатформы+">"; + + КаталогиУстановкиПлатформы = СобратьВозможныеКаталогиУстановкиПлатформыWindows(); + + Если КаталогиУстановкиПлатформы.Количество() = 0 Тогда + + файлProgramFiles = Новый Файл("C:\Program Files (x86)\"); + Если Не файлProgramFiles.Существует() Тогда + файлProgramFiles = Новый Файл("C:\Program Files\"); + Если Не файлProgramFiles.Существует() Тогда + ВызватьИсключение "Не обнаружено установленных версий платформы 1С"; + КонецЕсли; + КонецЕсли; + + КаталогиУстановкиПлатформы.Добавить(файлProgramFiles.ПолноеИмя); + КонецЕсли; - - ИменаВерсий = Новый Массив; - Для Каждого ЭлементМассива Из МассивФайлов Цикл - правыйСимвол = Прав(ЭлементМассива.Имя,1); - Если правыйСимвол < "0" или правыйСимвол > "9" Тогда + + Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл + + МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); + Если МассивФайлов.Количество() = 0 Тогда Продолжить; + //ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; КонецЕсли; - ИменаВерсий.Добавить(ЭлементМассива.Имя); - КонецЦикла; - МаксВерсия = ИменаВерсий[0]; - Для Сч = 1 По ИменаВерсий.Количество()-1 Цикл - Если МаксВерсия < ИменаВерсий[Сч] Тогда - МаксВерсия = ИменаВерсий[Сч]; - КонецЕсли; + ИменаВерсий = Новый Массив; + Для Каждого ЭлементМассива Из МассивФайлов Цикл + правыйСимвол = Прав(ЭлементМассива.Имя,1); + Если правыйСимвол < "0" или правыйСимвол > "9" Тогда + Продолжить; + КонецЕсли; + ИменаВерсий.Добавить(ЭлементМассива.Имя); + КонецЦикла; + + МаксВерсия = ИменаВерсий[0]; + Для Сч = 1 По ИменаВерсий.Количество()-1 Цикл + Если МаксВерсия < ИменаВерсий[Сч] Тогда + МаксВерсия = ИменаВерсий[Сч]; + КонецЕсли; + КонецЦикла; + + НужныйПуть = Новый Файл(путьКПлатформе + МаксВерсия + "\bin\1cv8.exe"); + Прервать; + КонецЦикла; - - НужныйПуть = Новый Файл(путьКПлатформе + МаксВерсия + "\bin\1cv8.exe"); Иначе + // help wanted: на Линукс конфиг стартера лежит в ~/.1C/1cestart. КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); Если НЕ КаталогУстановки.Существует() Тогда КаталогУстановки = Новый Файл("/opt/1C/v8.3/x86_64"); @@ -390,6 +390,47 @@ КонецПроцедуры +Функция СобратьВозможныеКаталогиУстановкиПлатформыWindows() + + СИ = Новый СистемнаяИнформация; + + // Ищем в расположениях для Vista и выше. + // Желающие поддержать пути в Windows XP - welcome + КаталогВсеПользователи = СИ.ПолучитьПеременнуюСреды("ALLUSERSPROFILE"); + КаталогТекущегоПользователя = СИ.ПолучитьПеременнуюСреды("APPDATA"); + + МассивПутей = Новый Массив; + СуффиксРасположения = "\1C\1CEStart\1CEStart.cfg"; + + ОбщийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ОбщийКонфиг); + + ПользовательскийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг); + + Возврат МассивПутей; + +КонецФункции + +Процедура ДополнитьМассивРасположенийИзКонфигурационногоФайла(Знач ИмяФайла, Знач МассивПутей) + + ФайлКонфига = Новый Файл(ИмяФайла); + Если Не ФайлКонфига.Существует() Тогда + Возврат; + КонецЕсли; + + Конфиг = Новый КонфигурацияСтартера; + Конфиг.Открыть(ИмяФайла); + + Значения = Конфиг.ПолучитьСписок("InstalledLocation"); + Если Значения <> Неопределено Тогда + Для Каждого Путь Из Значения Цикл + МассивПутей.Добавить(Путь); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + ////////////////////////////////////////////////////////////////////////////////// // Служебные процедуры From aa8932380de49b3d49962cfcb6ebdeb4bbdf9b39 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 15 Dec 2015 15:12:52 +0300 Subject: [PATCH 16/60] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D1=83=D1=81=D0=BA=D0=B5=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0=D1=85=20?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80=D0=BC=D1=8B.=20fixes=20#30?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 36 +++++++++++++++++++---------- src/v8runner/tests/v8runner-test.os | 2 ++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 4907784..75dc9ca 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -263,7 +263,7 @@ КаталогиУстановкиПлатформы = СобратьВозможныеКаталогиУстановкиПлатформыWindows(); Если КаталогиУстановкиПлатформы.Количество() = 0 Тогда - + Лог.Отладка("В конфигах стартера не найдены пути установки. Пробую стандартные пути наугад."); файлProgramFiles = Новый Файл("C:\Program Files (x86)\"); Если Не файлProgramFiles.Существует() Тогда файлProgramFiles = Новый Файл("C:\Program Files\"); @@ -272,16 +272,20 @@ КонецЕсли; КонецЕсли; - КаталогиУстановкиПлатформы.Добавить(файлProgramFiles.ПолноеИмя); + КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv8")); + КаталогиУстановкиПлатформы.Добавить(ОбъединитьПути(файлProgramFiles.ПолноеИмя, "1Cv82")); КонецЕсли; + НужныйПуть = Неопределено; Для Каждого ВозможныйПуть Из КаталогиУстановкиПлатформы Цикл + Лог.Отладка("Выполняю попытку поиска версии в каталоге " + ВозможныйПуть); + МассивФайлов = НайтиФайлы(ВозможныйПуть, ВерсияПлатформы+"*"); Если МассивФайлов.Количество() = 0 Тогда + Лог.Отладка("Не найдено ни одного каталога с версией."); Продолжить; - //ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; КонецЕсли; ИменаВерсий = Новый Массив; @@ -299,11 +303,17 @@ МаксВерсия = ИменаВерсий[Сч]; КонецЕсли; КонецЦикла; - - НужныйПуть = Новый Файл(путьКПлатформе + МаксВерсия + "\bin\1cv8.exe"); + + НужныйПуть = Новый Файл(ОбъединитьПути(ВозможныйПуть, МаксВерсия, "bin\1cv8.exe")); + Лог.Отладка("Версия найдена: " + НужныйПуть.ПолноеИмя); Прервать; КонецЦикла; + + Если НужныйПуть = Неопределено Тогда + ВызватьИсключение "Не найден путь к платформе 1С <"+ВерсияПлатформы+">"; + КонецЕсли; + Иначе // help wanted: на Линукс конфиг стартера лежит в ~/.1C/1cestart. КаталогУстановки = Новый Файл("/opt/1C/v8.3/i386"); @@ -312,6 +322,7 @@ КонецЕсли; НужныйПуть = Новый Файл(Строка(КаталогУстановки.ПолноеИмя) + "/" + "1cv8"); КонецЕсли; + Если Не НужныйПуть.Существует() Тогда ВызватьИсключение "Ошибка определения версии платформы. Файл <"+НужныйПуть.ПолноеИмя+"> не существует"; КонецЕсли; @@ -400,13 +411,13 @@ КаталогТекущегоПользователя = СИ.ПолучитьПеременнуюСреды("APPDATA"); МассивПутей = Новый Массив; - СуффиксРасположения = "\1C\1CEStart\1CEStart.cfg"; + СуффиксРасположения = "1C\1CEStart\1CEStart.cfg"; ОбщийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); - ДополнитьМассивРасположенийИзКонфигурационногоФайла(ОбщийКонфиг); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ОбщийКонфиг, МассивПутей); - ПользовательскийКонфиг = ОбъединитьПути(КаталогВсеПользователи, СуффиксРасположения); - ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг); + ПользовательскийКонфиг = ОбъединитьПути(КаталогТекущегоПользователя, СуффиксРасположения); + ДополнитьМассивРасположенийИзКонфигурационногоФайла(ПользовательскийКонфиг, МассивПутей); Возврат МассивПутей; @@ -416,9 +427,11 @@ ФайлКонфига = Новый Файл(ИмяФайла); Если Не ФайлКонфига.Существует() Тогда + Лог.Отладка("Конфигурационный файл " + ИмяФайла + " не найден."); Возврат; КонецЕсли; + Лог.Отладка("Читаю конфигурационный файл " + ИмяФайла + "."); Конфиг = Новый КонфигурацияСтартера; Конфиг.Открыть(ИмяФайла); @@ -426,7 +439,7 @@ Если Значения <> Неопределено Тогда Для Каждого Путь Из Значения Цикл МассивПутей.Добавить(Путь); - КонецЕсли; + КонецЦикла; КонецЕсли; КонецПроцедуры @@ -619,8 +632,6 @@ мКонтекстКоманды.Вставить("КлючРазрешенияЗапуска", ""); ПутьКПлатформе1С(ПолучитьПутьКВерсииПлатформы("8.3")); - Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); - КонецПроцедуры Функция СкопироватьСтруктуру(Знач Источник) @@ -637,4 +648,5 @@ ////////////////////////////////////////////////////////////////////////////////////// // Инициализация +Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); Инициализация(); diff --git a/src/v8runner/tests/v8runner-test.os b/src/v8runner/tests/v8runner-test.os index e749a2b..d20ba5d 100644 --- a/src/v8runner/tests/v8runner-test.os +++ b/src/v8runner/tests/v8runner-test.os @@ -6,6 +6,8 @@ Процедура Инициализация() УправлениеКонфигуратором = Новый УправлениеКонфигуратором; + Лог = Логирование.ПолучитьЛог("oscript.lib.v8runner"); + Лог.УстановитьУровень(УровниЛога.Отладка); КонецПроцедуры From dbd58ef9ec201afe1f049e8f0fdaef02df2d2099 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 15 Dec 2015 15:36:25 +0300 Subject: [PATCH 17/60] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D1=87=D0=B8=D0=BA=20=D0=BF=D0=BE=20=D0=BA=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=B0=D0=BC=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=D0=B5=D0=BD=20=D0=B8=D0=B7=20opm=20=D0=B2=20=D0=B3?= =?UTF-8?q?=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D1=87=D0=B8=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/package-loader.os | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/package-loader.os b/src/package-loader.os index 874ab62..d082363 100644 --- a/src/package-loader.os +++ b/src/package-loader.os @@ -6,6 +6,8 @@ Если ФайлМанифеста.Существует() Тогда СтандартнаяОбработка = Ложь; ОбработатьМанифест(ФайлМанифеста.ПолноеИмя, Путь, Отказ); + Иначе + ОбработатьСтруктуруКаталоговПоСоглашению(Путь, СтандартнаяОбработка, Отказ); КонецЕсли; КонецПроцедуры @@ -57,3 +59,26 @@ Чтение.Закрыть(); КонецПроцедуры + +Процедура ОбработатьСтруктуруКаталоговПоСоглашению(Путь, СтандартнаяОбработка, Отказ) + + КаталогКлассов = Новый Файл(ОбъединитьПути(Путь, "Классы")); + КаталогМодулей = Новый Файл(ОбъединитьПути(Путь, "Модули")); + + Если КаталогКлассов.Существует() Тогда + Файлы = НайтиФайлы(КаталогКлассов.ПолноеИмя, "*.os"); + Для Каждого Файл Из Файлы Цикл + СтандартнаяОбработка = Ложь; + ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения); + КонецЦикла; + КонецЕсли; + + Если КаталогМодулей.Существует() Тогда + Файлы = НайтиФайлы(КаталогМодулей.ПолноеИмя, "*.os"); + Для Каждого Файл Из Файлы Цикл + СтандартнаяОбработка = Ложь; + ДобавитьМодуль(Файл.ПолноеИмя, Файл.ИмяБезРасширения); + КонецЦикла; + КонецЕсли; + +КонецПроцедуры From d320d392e674a27763cf873421eb27126c909900 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Tue, 15 Dec 2015 15:37:48 +0300 Subject: [PATCH 18/60] =?UTF-8?q?=D0=9E=D1=82=D0=B4=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D1=87?= =?UTF-8?q?=D0=B8=D0=BA=20=D0=B4=D0=BB=D1=8F=20opm=20=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD.=20fixes=20#37?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/opm/src/package-loader.os | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 src/opm/src/package-loader.os diff --git a/src/opm/src/package-loader.os b/src/opm/src/package-loader.os deleted file mode 100644 index 55a7277..0000000 --- a/src/opm/src/package-loader.os +++ /dev/null @@ -1,22 +0,0 @@ -////////////////////////////////////////////////////////////////// -// ЗАГРУЗЧИК МОДУЛЕЙ ПРИЛОЖЕНИЯ - -Процедура ПриЗагрузкеБиблиотеки(Знач Путь, СтандартнаяОбработка, Отказ) Экспорт - - СтандартнаяОбработка = Ложь; - - КаталогПриложения = ТекущийСценарий().Каталог; - - КаталогКлассов = ОбъединитьПути(КаталогПриложения, "Классы"); - Файлы = НайтиФайлы(КаталогКлассов, "*.os"); - Для Каждого Файл Из Файлы Цикл - ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения); - КонецЦикла; - - КаталогМодулей = ОбъединитьПути(КаталогПриложения, "Модули"); - Файлы = НайтиФайлы(КаталогМодулей, "*.os"); - Для Каждого Файл Из Файлы Цикл - ДобавитьМодуль(Файл.ПолноеИмя, Файл.ИмяБезРасширения); - КонецЦикла; - -КонецПроцедуры From f7362f41477d5cfbf5101368bcf025e974f3907e Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 23 Dec 2015 14:41:40 +0300 Subject: [PATCH 19/60] =?UTF-8?q?=D0=92=D1=8B=D0=BD=D0=B5=D1=81=20=D0=B2?= =?UTF-8?q?=D0=BD=D1=83=D1=82=D1=80=D0=B5=D0=BD=D0=BD=D0=B8=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D1=8B=20=D0=B2=20=D0=B1=D0=B8=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D1=83,=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B6=D0=B0=D0=B5=D0=BC=D1=83=D1=8E=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D1=87=D0=B8=D0=BA.=20=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\271\320\244\320\260\320\271\320\273.os" | 0 ...20\267\320\260\321\206\320\270\320\270.os" | 1 - src/gitsync/src/gitsync.os | 5 +++-- src/gitsync/tests/git-sync-test.os | 19 ++++++++----------- src/gitsync/tests/multi-controller-xml.os | 4 +--- 5 files changed, 12 insertions(+), 17 deletions(-) rename src/gitsync/src/cmd-builder.os => "src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" (100%) rename src/gitsync/src/unpack.os => "src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" (99%) diff --git a/src/gitsync/src/cmd-builder.os "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" similarity index 100% rename from src/gitsync/src/cmd-builder.os rename to "src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" diff --git a/src/gitsync/src/unpack.os "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" similarity index 99% rename from src/gitsync/src/unpack.os rename to "src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 8e83695..fa6baa5 100644 --- a/src/gitsync/src/unpack.os +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -1262,6 +1262,5 @@ Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); ДоменПочтыДляGitПоУмолчанию = "localhost"; -ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "cmd-builder.os"), "КомандныйФайл"); ОписаниеИерархическогоФормата = "hierarchical"; diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index abb7dda..b894d7f 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -5,6 +5,8 @@ #Использовать cmdline #Использовать logos +#Использовать "core" + Перем Лог; /////////////////////////////////////////////////////////////////// @@ -271,8 +273,7 @@ КонецПроцедуры Функция ПолучитьРаспаковщик() - КаталогСкрипта = ТекущийСценарий().Каталог; - Возврат ЗагрузитьСценарий(ОбъединитьПути(КаталогСкрипта, "unpack.os")); + Возврат Новый МенеджерСинхронизации(); КонецФункции Функция ПолучитьПутьКБазеДанныхХранилища(Знач ПутьКХранилищу) diff --git a/src/gitsync/tests/git-sync-test.os b/src/gitsync/tests/git-sync-test.os index 3813ccd..66412d1 100644 --- a/src/gitsync/tests/git-sync-test.os +++ b/src/gitsync/tests/git-sync-test.os @@ -2,18 +2,15 @@ #Использовать logos #Использовать strings +#Использовать "../src/core" + Перем юТест; Перем Распаковщик; Перем Лог; Процедура Инициализация() - ПутьКРаспаковщику = ОбъединитьПути(ТекущийСценарий().Каталог, "../src/unpack.os"); - ПодключитьСценарий(ПутьКРаспаковщику, "Распаковщик"); - - ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "../src/cmd-builder.os"), "КомандныйФайл"); - - Распаковщик = Новый Распаковщик; + Распаковщик = Новый МенеджерСинхронизации(); Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); Лог.УстановитьУровень(УровниЛога.Отладка); @@ -101,7 +98,7 @@ ПутьКФайлуКонфигурации = ПолучитьФайлКонфигурацииИзМакета(); - Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки); + Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки, "plain"); ФайлПереименований = Новый Файл(ОбъединитьПути(КаталогВыгрузки, "renames.txt")); ФайлКорняМетаданных = Новый Файл(ОбъединитьПути(КаталогВыгрузки, "Configuration.xml")); @@ -114,7 +111,7 @@ Процедура Тест_ДолженВыгрузитьМодули() Экспорт КаталогПлоскойВыгрузки = ВременныеФайлы.СоздатьКаталог(); - Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки); + Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки, "plain"); МассивФайлов = НайтиФайлы(КаталогПлоскойВыгрузки,"*.*"); @@ -124,11 +121,11 @@ Процедура Тест_ДолженРазложитьМодули1СПоПапкамСогласноИерархииМетаданных() Экспорт КаталогПлоскойВыгрузки = ВременныеФайлы.СоздатьКаталог(); - Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки); + Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки, "plain"); КаталогИерархическойВыгрузки = ВременныеФайлы.СоздатьКаталог(); - Распаковщик.РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, КаталогИерархическойВыгрузки); + Распаковщик.РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, КаталогИерархическойВыгрузки, "plain"); ФайлПереименований = Новый Файл(КаталогИерархическойВыгрузки + "\renames.txt"); юТест.ПроверитьИстину(ФайлПереименований.Существует(), "Не удалось разложим модули 1С по иерархии - не существует файл <"+ФайлПереименований.ПолноеИмя+">"); @@ -387,7 +384,7 @@ ПутьКФайлуКонфигурации = ПолучитьФайлКонфигурацииИзМакета(); - Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки); + Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки, "plain"); МассивФайлов = НайтиФайлы(КаталогВыгрузки, ПолучитьМаскуВсеФайлы()); юТест.Проверить(МассивФайлов.Количество() > 0, "в каталоге разложения модулей 1С <"+КаталогВыгрузки+"> должны быть файлы"); diff --git a/src/gitsync/tests/multi-controller-xml.os b/src/gitsync/tests/multi-controller-xml.os index 1a5157b..fbaf2e7 100644 --- a/src/gitsync/tests/multi-controller-xml.os +++ b/src/gitsync/tests/multi-controller-xml.os @@ -1,8 +1,8 @@  #Использовать logos +#Использовать "../src/core" Перем юТест; -Перем Распаковщик; Перем Лог; Перем мНастройки; @@ -22,9 +22,7 @@ Процедура Инициализация() ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "../src/xml-config.os"), "ЧтениеКонфига"); - ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "../src/unpack.os"), "Распаковщик"); - Распаковщик = Новый Распаковщик; Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); Лог.УстановитьУровень(УровниЛога.Отладка); From f3adbc5f3c01eb58eff57e10865160405d6fa209 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 23 Dec 2015 14:47:43 +0300 Subject: [PATCH 20/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D1=83=D1=82=D1=8C=20=D0=BA=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=D1=83=20=D0=B4=D0=B2=D0=BE=D0=B8?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D1=85=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index fa6baa5..1b8c6f4 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -1041,7 +1041,7 @@ Если мФайлПрограммыРаспаковки = Неопределено Тогда Если ЭтоWindows = Истина Тогда - КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\bin"); + КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\..\..\bin"); ФайлПрограммы = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "UnpackV8.exe")); Если Не ФайлПрограммы.Существует() Тогда ВызватьИсключение СтроковыеФункции.ПодставитьПараметрыВСтроку("Не обнаружен файл программы распаковки: <%1>", ФайлПрограммы.ПолноеИмя); From 898e5c55c15820bf0ff28563297b981e1a0d20ce Mon Sep 17 00:00:00 2001 From: Alexey Shaposhnikov Date: Wed, 23 Dec 2015 16:25:38 +0300 Subject: [PATCH 21/60] =?UTF-8?q?=D0=A3=D1=81=D1=82=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B4=D1=83=D0=B1=D0=BB=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 56e4e46..f15991b 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -84,9 +84,7 @@ ВыполнитьКоманду(Параметры); Если ОбновитьКонфигурациюИБ Тогда - Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); - Параметры.Добавить("/UpdateDBCfg -Server"); - ВыполнитьКоманду(Параметры); + ОбновитьКонфигурациюБазыДанных(Ложь, Истина); КонецЕсли; КонецПроцедуры From 41bd4e8a199c0e7382d41c9eff41dac46407f0e1 Mon Sep 17 00:00:00 2001 From: Alexey Shaposhnikov Date: Wed, 23 Dec 2015 16:32:41 +0300 Subject: [PATCH 22/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D1=88=D0=B8=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D0=BA=D0=BE=D0=BD=D1=84?= =?UTF-8?q?=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index f15991b..08eee86 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -184,6 +184,22 @@ Возврат СтандартныеПараметрыЗапускаКонфигуратора(); КонецФункции +Процедура ВыполнитьРасширеннуюПроверкуКонфигуратора(Ключи) Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + + Параметры.Добавить("/CheckConfig"); + + Для Каждого СтрокаКлюча Из Ключи Цикл + Если СтрокаКлюча.Значение = Истина Тогда + Параметры.Добавить(СтрокаКлюча.Ключ); + КонецЕсли; + КонецЦикла; + + ВыполнитьКоманду(Параметры); + +КонецПроцедуры + Процедура ВыполнитьСинтаксическийКонтроль( Знач ТонкийКлиент = Истина, Знач ВебКлиент = Истина, From 6d1569991018c3dd355246579e158913221218ce Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 23 Dec 2015 17:00:07 +0300 Subject: [PATCH 23/60] =?UTF-8?q?fixed=20#42=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20gitsync=20=D0=BA=D0=B0=D0=BA?= =?UTF-8?q?=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/package-loader.os | 8 ++++++++ src/gitsync/tests/git-sync-test.os | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 src/gitsync/package-loader.os diff --git a/src/gitsync/package-loader.os b/src/gitsync/package-loader.os new file mode 100644 index 0000000..d9e4f5b --- /dev/null +++ b/src/gitsync/package-loader.os @@ -0,0 +1,8 @@ + +#Использовать "src/core" + +Процедура ПриЗагрузкеБиблиотеки(Путь, СтандартнаяОбработка, Отказ) + + СтандартнаяОбработка = Ложь; + +КонецПроцедуры diff --git a/src/gitsync/tests/git-sync-test.os b/src/gitsync/tests/git-sync-test.os index 66412d1..fc43142 100644 --- a/src/gitsync/tests/git-sync-test.os +++ b/src/gitsync/tests/git-sync-test.os @@ -2,7 +2,7 @@ #Использовать logos #Использовать strings -#Использовать "../src/core" +#Использовать ".." Перем юТест; Перем Распаковщик; From 20af89be2e22dfa62055b3897f0dfe50a5abec66 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 24 Dec 2015 14:35:18 +0300 Subject: [PATCH 24/60] =?UTF-8?q?=D0=A1=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D0=BC=20=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80?= =?UTF-8?q?=D1=83=D0=B5=D1=82=D1=81=D1=8F=20=D1=81=D1=80=D0=B5=D0=B4=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B0=D0=BC=D0=B8=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D0=BE=D1=82=D0=B5=D0=BA=D0=B8=20cmdline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 149 ++++++++++++++++++++----------------- 1 file changed, 82 insertions(+), 67 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index b894d7f..e231ebe 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -18,6 +18,16 @@ Возврат Неопределено; КонецЕсли; + Парсер = ИнициализироватьПарсерАргументов(); + + Параметры = Парсер.Разобрать(АргументыКоманднойСтроки); + + Возврат Параметры; + +КонецФункции + +Функция ИнициализироватьПарсерАргументов() + Парсер = Новый ПарсерАргументовКоманднойСтроки(); ДобавитьКомандуClone(Парсер); @@ -26,57 +36,55 @@ ДобавитьКомандуHelp(Парсер); ДобавитьАргументыПоУмолчанию(Парсер); - Параметры = Парсер.Разобрать(АргументыКоманднойСтроки); - - Возврат Параметры; + Возврат Парсер; КонецФункции Процедура ДобавитьКомандуClone(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("clone"); + Команда = Парсер.ОписаниеКоманды("clone", "Клонирует существующий репозиторий и создает служебные файлы"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ПутьКХранилищу"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "URLРепозитория"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит"); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ПутьКХранилищу", "Файловый путь к каталогу хранилища конфигурации 1С."); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "URLРепозитория", "Адрес удаленного репозитория GIT."); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит", "Каталог исходников внутри локальной копии git."); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры Процедура ДобавитьКомандуInit(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("init"); + Команда = Парсер.ОписаниеКоманды("init", "Создает новый репозиторий и создает служебные файлы"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ПутьКХранилищу"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит"); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ПутьКХранилищу", "Файловый путь к каталогу хранилища конфигурации 1С."); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит", "Адрес удаленного репозитория GIT."); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры Процедура ДобавитьКомандуAll(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("all"); + Команда = Парсер.ОписаниеКоманды("all", "Запускает синхронизацию по нескольким репозиториям"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ПутьКНастройкам"); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ПутьКНастройкам", "Путь к файлу настроек синхронизатора"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-log"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-timer"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-log", "Путь к файлу лога"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-timer", "Интервал срабатывания"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-force"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-force", " принудительная синхронизация"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры Процедура ДобавитьКомандуHelp(Знач Парсер) - Команда = Парсер.ОписаниеКоманды("help"); + Команда = Парсер.ОписаниеКоманды("help", "Вывести справку по параметрам команды"); Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КомандаДляСправки"); Парсер.ДобавитьКоманду(Команда); @@ -85,14 +93,14 @@ Процедура ДобавитьАргументыПоУмолчанию(Знач Парсер) - Парсер.ДобавитьПараметр("ПутьКХранилищу"); - Парсер.ДобавитьПараметр("URLРепозитория"); - - Парсер.ДобавитьПараметр("ЛокальныйКаталогГит"); - Парсер.ДобавитьИменованныйПараметр("-email"); - Парсер.ДобавитьИменованныйПараметр("-v8version"); - Парсер.ДобавитьИменованныйПараметр("-debug"); - Парсер.ДобавитьИменованныйПараметр("-format"); + Парсер.ДобавитьПараметр("ПутьКХранилищу", "Файловый путь к каталогу хранилища конфигурации 1С."); + Парсер.ДобавитьПараметр("URLРепозитория", "Адрес удаленного репозитория GIT."); + Парсер.ДобавитьПараметр("ЛокальныйКаталогГит", "Каталог исходников внутри локальной копии git."); + + Парсер.ДобавитьИменованныйПараметр("-email", "<домен почты для пользователей git>"); + Парсер.ДобавитьИменованныйПараметр("-v8version", "Маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)"); + Парсер.ДобавитьИменованныйПараметр("-debug", ""); + Парсер.ДобавитьИменованныйПараметр("-format", ""); КонецПроцедуры @@ -366,20 +374,30 @@ Процедура ПоказатьИнформациюОПараметрахКоманднойСтроки() + Парсер = ИнициализироватьПарсерАргументов(); + + ВозможныеКоманды = Парсер.СправкаВозможныеКоманды(); + Сообщить("Синхронизация хранилища конфигураций 1С с репозитарием GIT."); Сообщить("Использование: "); Сообщить(" gitsync [local-dir] [ключи]"); Сообщить(" gitsync <команда> <параметры команды> [ключи]"); - Сообщить("Возможные команды:"); - Сообщить(" clone - | init - | all"); - - Сообщить("Возможные ключи:"); - Сообщить(" -email <домен почты для пользователей git> - | -v8version <маска версии 1С> - | -debug - | -format "); + ВывестиПараметры(Парсер.СправкаПоПараметрам()); + + Сообщить(Символы.ПС + "Возможные команды:"); + + МаксШирина = 0; + Поле = " "; + Для Каждого Команда Из ВозможныеКоманды Цикл + ТекШирина = СтрДлина(Команда.Команда); + Если ТекШирина > МаксШирина Тогда + МаксШирина = ТекШирина; + КонецЕсли; + КонецЦикла; + + Для Каждого Команда Из ВозможныеКоманды Цикл + Сообщить(" " + Лев(Команда.Команда + Поле, МаксШирина + 2) + "- " + Команда.Пояснение); + КонецЦикла; Сообщить("Для подсказки по конкретной команде наберите gitsync help <команда>"); @@ -387,36 +405,31 @@ Процедура ВывестиСправкуПоКомандам(Знач Команда) Экспорт - Если Команда = "clone" Тогда - - Сообщить("Клонирует существующий репозиторий и создает служебные файлы"); - Сообщить("gitsync clone <путь-к-хранилищу> [local-dir] [ключи]"); - Сообщить("Возможные ключи:"); - Сообщить(" -email <домен почты для пользователей git> - | -debug "); - - ИначеЕсли Команда = "init" Тогда - - Сообщить("Создает новый репозиторий и создает служебные файлы"); - Сообщить("gitsync init <путь-к-хранилищу> [local-dir] [ключи]"); - Сообщить("Возможные ключи:"); - Сообщить(" -email <домен почты для пользователей git> - | -debug "); - - ИначеЕсли Команда = "all" Тогда - - Сообщить("Создает новый репозиторий и создает служебные файлы"); - Сообщить("gitsync all <путь-к-конфигурации> [ключи]"); - Сообщить("Возможные ключи:"); - Сообщить(" -log <файл лога>"); - Сообщить(" -timer <интервал>"); - Сообщить(" -force "); - Сообщить(" -debug "); - - Иначе - Сообщить("Неизвестная команда: " + Команда); + Парсер = ИнициализироватьПарсерАргументов(); + + ВозможныеКоманды = Парсер.СправкаВозможныеКоманды(); + ОписаниеКоманды = ВозможныеКоманды.Найти(Команда, "Команда"); + Если ОписаниеКоманды = Неопределено Тогда + Сообщить("Команда отсуствует: " + Команда); + Возврат; КонецЕсли; + Сообщить("" + ОписаниеКоманды.Команда + " - " + ОписаниеКоманды.Пояснение); + ВывестиПараметры(ОписаниеКоманды.Параметры); + +КонецПроцедуры + +Процедура ВывестиПараметры(Знач ОписаниеПараметров) + + Сообщить("Параметры:"); + Для Каждого СтрПараметр Из ОписаниеПараметров Цикл + Если Не СтрПараметр.ЭтоИменованныйПараметр Тогда + Сообщить(СтрШаблон(" <%1> - %2", СтрПараметр.Имя, СтрПараметр.Пояснение)); + Иначе + Сообщить(СтрШаблон(" %1 - %2", СтрПараметр.Имя, СтрПараметр.Пояснение)); + КонецЕсли; + КонецЦикла; + КонецПроцедуры /////////////////////////////////////////////////////////////////// @@ -432,6 +445,8 @@ ПоказатьИнформациюОПараметрахКоманднойСтроки(); Лог.Ошибка("Указаны некорректные аргументы командной строки"); ВременныеФайлы.Удалить(); + К = Новый Консоль; + К.ПрочитатьСтроку(); ЗавершитьРаботу(1); КонецЕсли; ВременныеФайлы.Удалить(); From 33c4b473a9932cd670de059c967d0caebf9800bc Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 24 Dec 2015 14:35:48 +0300 Subject: [PATCH 25/60] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=D0=BE=D0=B2=20=D1=84=D1=83=D0=BD=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=D0=BC=D0=B8,=20=D0=B2=D0=BE=D0=B7=D0=B2?= =?UTF-8?q?=D1=80=D0=B0=D1=89=D0=B0=D1=8E=D1=89=D0=B8=D0=BC=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cmdline/src/cmdline.os | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/cmdline/src/cmdline.os b/src/cmdline/src/cmdline.os index 1cc789b..b16bae3 100644 --- a/src/cmdline/src/cmdline.os +++ b/src/cmdline/src/cmdline.os @@ -10,29 +10,29 @@ Перем мПозицияПозиционныхПараметров; Перем мМассивВходныхПараметров; -Процедура ДобавитьПараметр(Знач ИмяПараметра, Знач Пояснение = "") Экспорт +Функция ДобавитьПараметр(Знач ИмяПараметра, Знач Пояснение = "") Экспорт Лог.Отладка("ДобавитьПараметр: ИмяПараметра <"+ИмяПараметра+">"); ДобавитьПараметрВТаблицу(мПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь, Ложь); -КонецПроцедуры +КонецФункции -Процедура ДобавитьИменованныйПараметр(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь) Экспорт +Функция ДобавитьИменованныйПараметр(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь) Экспорт Лог.Отладка("ДобавитьИменованныйПараметр: ИмяПараметра <"+ИмяПараметра+">"); ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Ложь, Глобальный); -КонецПроцедуры +КонецФункции -Процедура ДобавитьПараметрФлаг(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь) Экспорт +Функция ДобавитьПараметрФлаг(Знач ИмяПараметра, Знач Пояснение = "", Знач Глобальный = Ложь) Экспорт Лог.Отладка("ДобавитьПараметрФлаг: ИмяПараметра <"+ИмяПараметра+">"); ДобавитьПараметрВТаблицу(мПараметры, ИмяПараметра, Пояснение, Истина, Глобальный); -КонецПроцедуры +КонецФункции Функция ОписаниеКоманды(Знач ИмяКоманды, Знач Пояснение = "") Экспорт @@ -52,20 +52,20 @@ КонецПроцедуры -Процедура ДобавитьПозиционныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт +Функция ДобавитьПозиционныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт Лог.Отладка("Добавляю позиционный параметр "+ИмяПараметра); - ДобавитьПараметрВТаблицу(ОписаниеКоманды.ПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь); -КонецПроцедуры + Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ПозиционныеПараметры, ИмяПараметра, Пояснение, Ложь); +КонецФункции -Процедура ДобавитьИменованныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт +Функция ДобавитьИменованныйПараметрКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт Лог.Отладка("Добавляю именованный параметр "+ИмяПараметра); - ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Ложь); -КонецПроцедуры + Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Ложь); +КонецФункции -Процедура ДобавитьПараметрФлагКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт +Функция ДобавитьПараметрФлагКоманды(Знач ОписаниеКоманды, Знач ИмяПараметра, Знач Пояснение = "") Экспорт Лог.Отладка("Добавляю параметр-флаг "+ИмяПараметра); - ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Истина); -КонецПроцедуры + Возврат ДобавитьПараметрВТаблицу(ОписаниеКоманды.ИменованныеПараметры, ИмяПараметра, Пояснение, Истина); +КонецФункции Функция РазобратьКоманду(Знач МассивПараметров) Экспорт @@ -316,12 +316,15 @@ КонецФункции -Процедура ДобавитьПараметрВТаблицу(Знач Таблица, Знач Имя, Знач Пояснение, Знач Флаг, Знач Глобальный = Ложь) +Функция ДобавитьПараметрВТаблицу(Знач Таблица, Знач Имя, Знач Пояснение, Знач Флаг, Знач Глобальный = Ложь) СтрПараметр = Таблица.Добавить(); СтрПараметр.Имя = Строка(Имя); СтрПараметр.ЭтоФлаг = Флаг; СтрПараметр.Пояснение = Пояснение; СтрПараметр.ЭтоГлобальныйПараметр = Глобальный; -КонецПроцедуры + + Возврат СтрПараметр; + +КонецФункции Инит(); From 71fc806da9e6d3af92446e1810f064b7c95c3f60 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 28 Dec 2015 13:06:24 +0300 Subject: [PATCH 26/60] =?UTF-8?q?=D0=9E=D1=88=D0=B8=D0=B1=D0=BA=D0=B0:=20?= =?UTF-8?q?=D0=9A=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B0=20gitsync=20clone=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=B0=D0=BC=D0=BE=D0=BC=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BB=D0=B0?= =?UTF-8?q?=20=D1=82=D0=B0=D0=BA=D0=B6=D0=B5,=20=D0=BA=D0=B0=D0=BA=20gitsy?= =?UTF-8?q?nc=20init.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index e231ebe..f8ddebd 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -135,7 +135,7 @@ Если ОписаниеКоманды.Команда = "init" Тогда ПодготовитьНовыйРепозитарий(ОписаниеКоманды.ЗначенияПараметров, Истина); ИначеЕсли ОписаниеКоманды.Команда = "clone" Тогда - ПодготовитьНовыйРепозитарий(ОписаниеКоманды.ЗначенияПараметров, Ложь); + КлонироватьРепозитарий(ОписаниеКоманды.ЗначенияПараметров); ИначеЕсли ОписаниеКоманды.Команда = "all" Тогда СинхронизироватьПоСпискуРепозитариев(ОписаниеКоманды.ЗначенияПараметров); ИначеЕсли ОписаниеКоманды.Команда = "help" Тогда From 8f2423af2487cc44530a5334d58c0594f2c0f73f Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 28 Dec 2015 16:15:12 +0300 Subject: [PATCH 27/60] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C,=20=D0=BA?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B9=20=D0=BF=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=8F=D0=B5=D1=82=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE?= =?UTF-8?q?=D0=BA=20=D1=80=D0=B5=D0=BF=D0=BE=20=D0=B8=20=D0=B4=D0=B5=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B8=D0=B5,=20=D0=BA=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F,=20=D0=B5=D1=81=D0=BB=D0=B8=20=D1=80?= =?UTF-8?q?=D0=B5=D0=BF=D0=BE=20=D1=82=D1=80=D0=B5=D0=B1=D1=83=D0=B5=D1=82?= =?UTF-8?q?=20=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\267\320\260\321\206\320\270\321\217.os" | 69 ++++++++++++++++ src/gitsync/src/multi-controller.os | 80 +++---------------- src/gitsync/tests/multi-controller-xml.os | 2 +- 3 files changed, 83 insertions(+), 68 deletions(-) create mode 100644 "src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" new file mode 100644 index 0000000..b2212e4 --- /dev/null +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" @@ -0,0 +1,69 @@ +//////////////////////////////////////////////////////////////////////////// +// +// Скрипт управляет запуском синхронизации с GIT по нескольким репозиториям +// Copyright EvilBeaver 2015 +// +//////////////////////////////////////////////////////////////////////////// + +Перем Лог; +Перем мРаспаковщик; + +Процедура СинхронизироватьХранилища(Знач МенеджерСинхронизации, Знач ПровайдерНастроек, Знач ОбработчикСинхронизации, Знач Принудительно = Ложь) Экспорт + + Лог.Информация("Синхронизация началась"); + + мРаспаковщик = МенеджерСинхронизации; + + Для Каждого Репо Из ПровайдерНастроек.Репозитарии Цикл + + Попытка + + Если Принудительно Тогда + ВыполнитьСинхронизациюПоОдномуРепо(Репо, ОбработчикСинхронизации); + Иначе + ВыполнитьСинхронизациюПриНеобходимости(Репо, ОбработчикСинхронизации); + КонецЕсли; + + Исключение + Лог.Ошибка(ОписаниеОшибки()); + Продолжить; + КонецПопытки; + + КонецЦикла; + + Лог.Информация("Синхронизация завершена"); + +КонецПроцедуры + +Процедура ВыполнитьСинхронизациюПоОдномуРепо(Знач Репо, Знач ОбработчикСинхронизации) + + Лог.Информация("Синхронизация для '"+Репо.Имя+"'"); + ОбработчикСинхронизации.ПриНеобходимостиСинхронизации(Репо); + +КонецПроцедуры + +Процедура ВыполнитьСинхронизациюПриНеобходимости(Знач Репо, Знач ОбработчикСинхронизации) + + Лог.Информация("Проверяю необходимость синхронизации: " + Репо.Имя); + Если Не НеобходимоСинхронизироватьХранилище(Репо) Тогда + Лог.Информация("Синхронизация для '"+Репо.Имя+"' не требуется"); + Возврат; + КонецЕсли; + + ВыполнитьСинхронизациюПоОдномуРепо(Репо, ОбработчикСинхронизации); + +КонецПроцедуры + +Функция НеобходимоСинхронизироватьХранилище(Знач Репо) + + ФайлХранилища = ИмяФайлаБазыХранилища(Репо.КаталогХранилища1С); + + Возврат мРаспаковщик.ТребуетсяСинхронизироватьХранилище(ФайлХранилища, Репо.КаталогВыгрузки); + +КонецФункции + +Функция ИмяФайлаБазыХранилища(Знач Каталог) + Возврат ОбъединитьПути(Каталог, "1cv8ddb.1CD"); +КонецФункции + +Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); diff --git a/src/gitsync/src/multi-controller.os b/src/gitsync/src/multi-controller.os index 92b2370..7fe591b 100644 --- a/src/gitsync/src/multi-controller.os +++ b/src/gitsync/src/multi-controller.os @@ -6,16 +6,12 @@ //////////////////////////////////////////////////////////////////////////// #Использовать cmdline +#Использовать "core" Перем мКонтроллер; Перем мНастройки; -Перем Лог; Перем мФлагПринудительнойСинхронизации; -Процедура Инициализация() - Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); -КонецПроцедуры - //////////////////////////////////////////////////////////////////////// // Программный интерфейс @@ -24,7 +20,7 @@ ПрочитатьНастройкиИзФайла(ФайлНастроек); мФлагПринудительнойСинхронизации = Принудительно; мКонтроллер = Контроллер; - + СинхронизироватьХранилища(); КонецПроцедуры @@ -33,82 +29,32 @@ // Работа с конфигурационным файлом Процедура ПрочитатьНастройкиИзФайла(Знач ФайлНастроек) - + Конфиг = ЗагрузитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "xml-config.os")); мНастройки = Конфиг.ПрочитатьНастройкиИзФайла(ФайлНастроек); - + КонецПроцедуры //////////////////////////////////////////////////////////////////////// // Вспомогательные методы -Функция ИмяФайлаБазыХранилища(Знач Каталог) - Возврат ОбъединитьПути(Каталог, "1cv8ddb.1CD"); -КонецФункции - -Функция НеобходимоСинхронизироватьХранилище(Знач Репо) - - ФайлХранилища = ИмяФайлаБазыХранилища(Репо.КаталогХранилища1С); - - Возврат мКонтроллер.ТребуетсяСинхронизироватьХранилище(ФайлХранилища, Репо.КаталогВыгрузки); - -КонецФункции - Функция СинхронизироватьПринудительно() - + Возврат мФлагПринудительнойСинхронизации; - + КонецФункции Процедура СинхронизироватьХранилища() - СинхронизироватьПринудительно = СинхронизироватьПринудительно(); - - СообщениеСборки("Синхронизация началась"); - - Для Каждого Репо Из мНастройки.Репозитарии Цикл - - Попытка - - Если СинхронизироватьПринудительно Тогда - ВыполнитьСинхронизациюПоОдномуРепо(Репо); - Иначе - ВыполнитьСинхронизациюПриНеобходимости(Репо); - КонецЕсли; - - Исключение - СообщениеСборки(ОписаниеОшибки()); - Продолжить; - КонецПопытки; - - КонецЦикла; - СообщениеСборки("Синхронизация завершена"); -КонецПроцедуры - -Процедура ВыполнитьСинхронизациюПоОдномуРепо(Знач Репо) - - СообщениеСборки("Синхронизация для '"+Репо.Имя+"'"); - мКонтроллер.Синхронизировать(Репо.КаталогХранилища1С, Репо.GitURL, Репо.КаталогВыгрузки, Репо.ДоменПочтыДляGit, Репо.ПутьКПлатформе83) - -КонецПроцедуры - -Процедура ВыполнитьСинхронизациюПриНеобходимости(Знач Репо) - - Лог.Информация("Проверяю необходимость синхронизации: " + Репо.Имя); - Если Не НеобходимоСинхронизироватьХранилище(Репо) Тогда - СообщениеСборки("Синхронизация для '"+Репо.Имя+"' не требуется"); - Возврат; - КонецЕсли; - - ВыполнитьСинхронизациюПоОдномуРепо(Репо); - -КонецПроцедуры + ПакетнаяСинхронизация = Новый ПакетнаяСинхронизация; + ПакетнаяСинхронизация.СинхронизироватьХранилища(мКонтроллер, мНастройки, ЭтотОбъект, СинхронизироватьПринудительно()) -Процедура СообщениеСборки(Знач Текст) - Лог.Информация(Текст); КонецПроцедуры -/////////////////////////////////////////////////////////////// +// Вызывается в качестве обработчика из класса ПакетнаяСинхронизация // +Процедура ПриНеобходимостиСинхронизации(Знач Репо) Экспорт -Инициализация(); + мКонтроллер.Синхронизировать(Репо.КаталогХранилища1С, Репо.GitURL, Репо.КаталогВыгрузки, Репо.ДоменПочтыДляGit, Репо.ПутьКПлатформе83) + +КонецПроцедуры diff --git a/src/gitsync/tests/multi-controller-xml.os b/src/gitsync/tests/multi-controller-xml.os index fbaf2e7..4743608 100644 --- a/src/gitsync/tests/multi-controller-xml.os +++ b/src/gitsync/tests/multi-controller-xml.os @@ -1,6 +1,6 @@  #Использовать logos -#Использовать "../src/core" +#Использовать ".." Перем юТест; Перем Лог; From 70d3bd40036e1f01c9bd22a787c6ef52a3edc2da Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 28 Dec 2015 17:40:13 +0300 Subject: [PATCH 28/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\267\320\260\321\206\320\270\321\217.os" | 16 ++--- src/gitsync/src/multi-controller.os | 12 +++- src/gitsync/tests/multi-controller-xml.os | 63 +++++++++++++++++++ 3 files changed, 78 insertions(+), 13 deletions(-) diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" index b2212e4..6f2efac 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" @@ -8,12 +8,10 @@ Перем Лог; Перем мРаспаковщик; -Процедура СинхронизироватьХранилища(Знач МенеджерСинхронизации, Знач ПровайдерНастроек, Знач ОбработчикСинхронизации, Знач Принудительно = Ложь) Экспорт +Процедура СинхронизироватьХранилища(Знач ПровайдерНастроек, Знач ОбработчикСинхронизации, Знач Принудительно = Ложь) Экспорт Лог.Информация("Синхронизация началась"); - мРаспаковщик = МенеджерСинхронизации; - Для Каждого Репо Из ПровайдерНастроек.Репозитарии Цикл Попытка @@ -45,7 +43,7 @@ Процедура ВыполнитьСинхронизациюПриНеобходимости(Знач Репо, Знач ОбработчикСинхронизации) Лог.Информация("Проверяю необходимость синхронизации: " + Репо.Имя); - Если Не НеобходимоСинхронизироватьХранилище(Репо) Тогда + Если Не НеобходимоСинхронизироватьХранилище(Репо, ОбработчикСинхронизации) Тогда Лог.Информация("Синхронизация для '"+Репо.Имя+"' не требуется"); Возврат; КонецЕсли; @@ -54,16 +52,10 @@ КонецПроцедуры -Функция НеобходимоСинхронизироватьХранилище(Знач Репо) - - ФайлХранилища = ИмяФайлаБазыХранилища(Репо.КаталогХранилища1С); +Функция НеобходимоСинхронизироватьХранилище(Знач Репо, Знач ОбработчикСинхронизации) - Возврат мРаспаковщик.ТребуетсяСинхронизироватьХранилище(ФайлХранилища, Репо.КаталогВыгрузки); - -КонецФункции + Возврат ОбработчикСинхронизации.ТребуетсяСинхронизироватьХранилище(Репо); -Функция ИмяФайлаБазыХранилища(Знач Каталог) - Возврат ОбъединитьПути(Каталог, "1cv8ddb.1CD"); КонецФункции Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); diff --git a/src/gitsync/src/multi-controller.os b/src/gitsync/src/multi-controller.os index 7fe591b..5fe7bd9 100644 --- a/src/gitsync/src/multi-controller.os +++ b/src/gitsync/src/multi-controller.os @@ -47,7 +47,7 @@ Процедура СинхронизироватьХранилища() ПакетнаяСинхронизация = Новый ПакетнаяСинхронизация; - ПакетнаяСинхронизация.СинхронизироватьХранилища(мКонтроллер, мНастройки, ЭтотОбъект, СинхронизироватьПринудительно()) + ПакетнаяСинхронизация.СинхронизироватьХранилища(мНастройки, ЭтотОбъект, СинхронизироватьПринудительно()) КонецПроцедуры @@ -58,3 +58,13 @@ мКонтроллер.Синхронизировать(Репо.КаталогХранилища1С, Репо.GitURL, Репо.КаталогВыгрузки, Репо.ДоменПочтыДляGit, Репо.ПутьКПлатформе83) КонецПроцедуры + +Функция ТребуетсяСинхронизироватьХранилище(Знач Репо) Экспорт + + Возврат мКонтроллер.ТребуетсяСинхронизироватьХранилище(ИмяФайлаБазыХранилища(Репо.КаталогХранилища1С), Репо.КаталогВыгрузки); + +КонецФункции + +Функция ИмяФайлаБазыХранилища(Знач Каталог) + Возврат ОбъединитьПути(Каталог, "1cv8ddb.1CD"); +КонецФункции diff --git a/src/gitsync/tests/multi-controller-xml.os b/src/gitsync/tests/multi-controller-xml.os index 4743608..0bedda4 100644 --- a/src/gitsync/tests/multi-controller-xml.os +++ b/src/gitsync/tests/multi-controller-xml.os @@ -1,17 +1,20 @@  #Использовать logos +#Использовать tempfiles #Использовать ".." Перем юТест; Перем Лог; Перем мНастройки; +Перем мПараметрыВызоваПакетногоСинхронизатора; Функция ПолучитьСписокТестов(Тесты) Экспорт юТест = Тесты; Список = Новый Массив; Список.Добавить("Тест_ДолженПрочитатьФайлНастроек"); + Список.Добавить("Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизации"); Инициализация(); @@ -35,6 +38,7 @@ ФайлНастроек = КаталогFixtures() + "/config.xml"; ЧтениеКонфига = Новый ЧтениеКонфига(); мНастройки = ЧтениеКонфига.ПрочитатьНастройкиИзФайла(ФайлНастроек); + Возврат мНастройки; КонецФункции Функция КаталогFixtures() @@ -70,3 +74,62 @@ юТест.ПроверитьРавенство("gmail.com", мНастройки.Репозитарии[1].ДоменПочтыДляGit); КонецПроцедуры + +Процедура Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизации() Экспорт + ФайлХранилища = ОбъединитьПути(КаталогFixtures(), "ТестовыйФайлХранилища1С.1CD"); + КаталогРепо = ВременныеФайлы.СоздатьКаталог(); + КопироватьФайл(ФайлХранилища, ОбъединитьПути(КаталогРепо, "1cv8ddb.1CD")); + КаталогИсходников = ОбъединитьПути(КаталогРепо, "src"); + СоздатьКаталог(КаталогИсходников); + + РезультатИнициализацииГитЧисло = ИнициализироватьТестовоеХранилищеГит(КаталогРепо); + юТест.ПроверитьРавенство(0, РезультатИнициализацииГитЧисло, "Инициализация git-хранилища в каталоге: "+КаталогРепо); + + Распаковщик = Новый МенеджерСинхронизации; + + СоздатьФайлАвторовГит_ДляТестов(КаталогИсходников); + юТест.ПроверитьИстину(Новый Файл(ОбъединитьПути(КаталогИсходников, Распаковщик.ИмяФайлаАвторов())).Существует()); + Распаковщик.ЗаписатьФайлВерсийГит(КаталогИсходников,0); + юТест.ПроверитьИстину(Новый Файл(ОбъединитьПути(КаталогИсходников, Распаковщик.ИмяФайлаВерсииХранилища())).Существует()); + + Настройки = ПрочитатьТестовыеНастройки(); + Настройки.Репозитарии.Удалить(1); + Настройки.Репозитарии[0].КаталогВыгрузки = КаталогИсходников; + Настройки.Репозитарии[0].КаталогХранилища1С = КаталогРепо; + Настройки.Репозитарии[0].ПутьGit = "git"; + + мПараметрыВызоваПакетногоСинхронизатора = Неопределено; + ПакетныйСинхронизатор = Новый ПакетнаяСинхронизация; + ПакетныйСинхронизатор.СинхронизироватьХранилища(Настройки, ЭтотОбъект); + + юТест.ПроверитьНеравенство(Неопределено, мПараметрыВызоваПакетногоСинхронизатора); + юТест.ПроверитьРавенство("test", мПараметрыВызоваПакетногоСинхронизатора.Имя); + +КонецПроцедуры + +Функция ТребуетсяСинхронизироватьХранилище(Знач Репо) Экспорт + Возврат Истина; +КонецФункции + +Процедура ПриНеобходимостиСинхронизации(Знач Репо) Экспорт + мПараметрыВызоваПакетногоСинхронизатора = Репо; +КонецПроцедуры + +Функция ИнициализироватьТестовоеХранилищеГит(Знач КаталогРепозитория, Знач КакЧистое = Ложь) + + КодВозврата = Неопределено; + ЗапуститьПриложение("git init" + ?(КакЧистое, " --bare", ""), КаталогРепозитория, Истина, КодВозврата); + + Возврат КодВозврата; + +КонецФункции + +Процедура СоздатьФайлАвторовГит_ДляТестов(Знач Каталог) + + ФайлАвторов = Новый ЗаписьТекста; + ФайлАвторов.Открыть(ОбъединитьПути(Каталог, "AUTHORS"), "utf-8"); + ФайлАвторов.ЗаписатьСтроку("Администратор=Администратор "); + ФайлАвторов.ЗаписатьСтроку("Отладка=Отладка "); + ФайлАвторов.Закрыть(); + +КонецПроцедуры \ No newline at end of file From 8c3e2b1b7829fcbebb8641ce4e904e3ade25ed94 Mon Sep 17 00:00:00 2001 From: Alexander Kuntashov Date: Thu, 31 Dec 2015 20:05:45 +0300 Subject: [PATCH 29/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B8=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2=20JSON=20=D0=BA=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/json/src/json.os | 35 +++++++++++++---------------------- src/json/tests/json-test.os | 22 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/json/src/json.os b/src/json/src/json.os index 0ac3e0a..1dbea0a 100644 --- a/src/json/src/json.os +++ b/src/json/src/json.os @@ -250,13 +250,21 @@ // - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; // - Ложь - ссылки передаются без представления (значение по умолчанию). // - Неопределено - автоопределение режима. -// +// +// АвтоматическиПриводитьОбъектыКСтруктуре - Булево. Определяет, нужно ли автоматически приводить объект к Структуре или к Соответствию. +// - Истина - выполняется автоматическое приведение объекта к структуре; +// - Ложь - автоматическое приведение объекта к структуре не выполняется, все объекты преобразуются в соответствие (значение по умолчанию). +// +// Примечание: +// Автоматическое приведение к структуре выполняется только для объектов имена свойств которых могут быть +// использованы как ключи структуры, все остальные объекты преобразуются в соответствие.// +// // Возвращаемое значение: // Набор данных согласно содержимому входящих данных. // -Функция ПрочитатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт +Функция ПрочитатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь, АвтоматическиПриводитьОбъектыКСтруктуре = Ложь) Экспорт - Возврат jsonПрочитатьИнициализация(Значение, Стандарт, ПредставленияСсылок); + Возврат jsonПрочитатьИнициализация(Значение, Стандарт, ПредставленияСсылок, АвтоматическиПриводитьОбъектыКСтруктуре); КонецФункции // ПрочитатьJSON() @@ -286,23 +294,6 @@ // ───────────────────────────────────────────────────────────────────────────── // НАСТРОЙКИ -// Функция управляющая настройкой "АвтоматическоеПриведениеОбъектаКСтруктуре". -// -// Возвращаемое значение: -// Булево. Значение настройки: -// - Истина - выполняется автоматическое приведение объекта к структуре; -// - Ложь - автоматическое приведение объекта к структуре не выполняется, все объекты преобразуются в соответствие. -// -// Примечание: -// Автоматическое приведение к структуре выполняется только для объектов имена свойств которых могут быть -// использованы как ключи структуры, все остальные объекты преобразуются в соответствие. -// -Функция НастройкаАвтоматическоеПриведениеОбъектаКСтруктуре() - - Возврат Ложь; // Измените для использования автоматического приведения объекта к структуре. - -КонецФункции // НастройкаАвтоматическоеПриведениеОбъектаКСтруктуре() - // Функция управляющая настройкой "ПолноеМаскированиеСимволов". // // Возвращаемое значение: @@ -359,7 +350,7 @@ Возврат Строка; //TODO вставлена для прохождения компиляции КонецФункции -Функция jsonПрочитатьИнициализация(Значение, Знач Стандарт, Знач ПредставленияСсылок) +Функция jsonПрочитатьИнициализация(Значение, Знач Стандарт, Знач ПредставленияСсылок, Знач АвтоматическиПриводитьКСтруктуре) // Проверка параметров. Если (Не Стандарт = Истина) И (Не Стандарт = Ложь) И (Не Стандарт = Неопределено) Тогда @@ -388,7 +379,7 @@ ВспомогательныеДанные = Новый Структура("ТипСтроки,СхемаПодстановок,АвтоматическиПриводитьКСтруктуре", Тип("Строка"), СхемаПодстановок, - (НастройкаАвтоматическоеПриведениеОбъектаКСтруктуре() = Истина)); + (АвтоматическиПриводитьКСтруктуре = Истина)); // Стартовые значения. Индекс = 1; Длина = СтрДлина(Значение); diff --git a/src/json/tests/json-test.os b/src/json/tests/json-test.os index 5d0b2a0..e5d2426 100644 --- a/src/json/tests/json-test.os +++ b/src/json/tests/json-test.os @@ -27,6 +27,7 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьПростойJSON"); ВсеТесты.Добавить("ТестДолжен_ПроверитьФайлMockНаЧтение"); ВсеТесты.Добавить("ТестДолжен_ПроверитьФайлMockНаЗапись"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоОбъектПриводитсяКСтруктуре"); Возврат ВсеТесты; КонецФункции @@ -86,6 +87,27 @@ КонецПроцедуры +Процедура ТестДолжен_ПроверитьЧтоОбъектПриводитсяКСтруктуре() Экспорт + + тестовыйJSON = "{ + | ""firstName"": ""Иван"", + | ""lastName"": ""Иванов"", + | ""address"": { + | ""streetAddress"": ""Московское ш., 101, кв.101"", + | ""city"": ""Ленинград"", + | ""postalCode"": 101101 + | }, + | ""phoneNumbers"": [ + | ""812 123-1234"", + | ""916 123-4567"" + | ] + |}"; + + Объект = _преобразовательJSON.ПрочитатьJSON(тестовыйJSON,,,Истина); + юТест.ПроверитьРавенство(Тип("Структура"), ТипЗнч(Объект)); + +КонецПроцедуры + Функция ПривестиОкончанияСтрок(Знач ИсходныйТекст) Возврат СтрЗаменить(ИсходныйТекст, Символы.ВК + Символы.ПС, Символы.ПС); КонецФункции From 2ad3aaabf57557902d044458f332e87ff8687b34 Mon Sep 17 00:00:00 2001 From: Alexander Kuntashov Date: Thu, 31 Dec 2015 23:14:24 +0300 Subject: [PATCH 30/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5?= =?UTF-8?q?=D0=BA=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D0=BC=D0=B0=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=B2=D0=BE=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/json/src/json.os | 89 ++++++++++++------------------------- src/json/tests/json-test.os | 89 +++++++++++++++++++++++++++++++++++-- 2 files changed, 115 insertions(+), 63 deletions(-) diff --git a/src/json/src/json.os b/src/json/src/json.os index 1dbea0a..be7e9fa 100644 --- a/src/json/src/json.os +++ b/src/json/src/json.os @@ -106,7 +106,7 @@ // МаскированиеКириллицы – маскирование кириллических символов современных алфавитов славянских языков. // Настройка изменяется в функции "НастройкаМаскированиеКириллицы" (по умолчанию отключена). // Не рекомендуется к использованию, так как влияет на производительность. -// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. +// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется вне зависимости от настройки. // // НеявноеПриведениеПримитивныхЗначенийКлюча – неявное приведение примитивных значений ключей соответствий к строке. // Настройка изменяется в функции "НеявноеПриведениеПримитивныхЗначенийКлюча" (по умолчанию отключена). @@ -254,10 +254,9 @@ // АвтоматическиПриводитьОбъектыКСтруктуре - Булево. Определяет, нужно ли автоматически приводить объект к Структуре или к Соответствию. // - Истина - выполняется автоматическое приведение объекта к структуре; // - Ложь - автоматическое приведение объекта к структуре не выполняется, все объекты преобразуются в соответствие (значение по умолчанию). -// -// Примечание: -// Автоматическое приведение к структуре выполняется только для объектов имена свойств которых могут быть -// использованы как ключи структуры, все остальные объекты преобразуются в соответствие.// +// Примечание: +// Автоматическое приведение к структуре выполняется только для объектов имена свойств которых могут быть +// использованы как ключи структуры, все остальные объекты преобразуются в соответствие.// // // Возвращаемое значение: // Набор данных согласно содержимому входящих данных. @@ -281,67 +280,35 @@ // - Истина - ссылки передаются вместе со своим представлением, как объекты с двумя свойствами содержащими саму ссылку и ее представление; // - Ложь - ссылки передаются без представления (значение по умолчанию). // -// Возвращаемое значение: -// Строка. Строка данных в формате JSON согласно содержимому входящих данных. -// -Функция ЗаписатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь) Экспорт - - Возврат jsonЗаписатьИнициализация(Значение, Стандарт, ПредставленияСсылок); - -КонецФункции // ЗаписатьJSON() - - -// ───────────────────────────────────────────────────────────────────────────── -// НАСТРОЙКИ - -// Функция управляющая настройкой "ПолноеМаскированиеСимволов". -// -// Возвращаемое значение: -// Булево. Значение настройки: -// - Истина - выполняется полное маскирование символов некорректно обрабатываемых JavaScript-ом; -// - Ложь - маскирование выполняется только согласно стандарту и дополнительно маскируются специальные символы. -// -// Примечание: -// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. -// -Функция НастройкаПолноеМаскированиеСимволов() - - Возврат Истина; // Измените для неполного маскирования символов. - -КонецФункции // НастройкаПолноеМаскированиеСимволов() - -// Функция управляющая настройкой "МаскированиеКириллицы". +// МаскироватьСимволыПолностью - Булево. Значения: +// - Истина - выполняется полное маскирование символов некорректно обрабатываемых JavaScript-ом (значение по умолчнию); +// - Ложь - маскирование выполняется только согласно стандарту и дополнительно маскируются специальные символы. +// Примечание: +// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. // -// Возвращаемое значение: -// Булево. Значение настройки: +// МаскироватьКириллицу - Булево. Значение настройки: // - Истина - выполняется маскирование кириллических символов; -// - Ложь - маскирование выполняется только согласно стандарту и дополнительно маскируются специальные символы. -// -// Примечание: -// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. -// -Функция НастройкаМаскированиеКириллицы() - - Возврат Ложь; // Измените для маскирования кириллических символов. - -КонецФункции // НастройкаМаскированиеКириллицы() - -// Функция управляющая настройкой "НеявноеПриведениеПримитивныхЗначенийКлюча". +// - Ложь - маскирование выполняется только согласно стандарту и дополнительно маскируются специальные символы (значение по умолчанию) +// Примечание: +// Маскирование специальных символов из диапазона [0x0000, 0x001f] выполняется в не зависимости от настройки. // -// Возвращаемое значение: -// Булево. Значение настройки: +// НеявноПриводитьПримитивныеЗначенияКлюча - Булево. Значение настройки: // - Истина - выполняется неявное приведение примитивных типов значений ключей соответствий к их строковому представлению в формате 1С; // - Ложь - неявное приведение примитивных типов значений ключей соответствий к строковому представлению не выполняется. +// Примечание: +// Неявно приводимые типы: Null, Булево, Число, Дата, Строка, УникальныйИдентификатор. +// TODO: В настоящий момент не поддерживаются в связи с необходимостью использования объекта ОписаниеТипов(); // -// Примечание: -// Неявно приводимые типы: Null, Булево, Число, Дата, Строка, УникальныйИдентификатор. +// Возвращаемое значение: +// Строка. Строка данных в формате JSON согласно содержимому входящих данных. // -Функция НастройкаНеявноеПриведениеПримитивныхЗначенийКлюча() +Функция ЗаписатьJSON(Значение, Стандарт = Истина, ПредставленияСсылок = Ложь, + МаскироватьСимволыПолностью=Истина, МаскироватьКириллицу=Ложь, + НеявноПриводитьПримитивныеЗначенияКлюча=Ложь) Экспорт - Возврат Ложь; // Измените для использования неявного приведения примитивных значений ключей соответствий к строке. + Возврат jsonЗаписатьИнициализация(Значение, Стандарт, ПредставленияСсылок, МаскироватьСимволыПолностью, МаскироватьКириллицу, Ложь); -КонецФункции // НастройкаНеявноеПриведениеПримитивныхЗначенийКлюча() - +КонецФункции // ЗаписатьJSON() // ───────────────────────────────────────────────────────────────────────────── // ПАРСЕР @@ -822,7 +789,9 @@ // ───────────────────────────────────────────────────────────────────────────── // СЕРИАЛИЗАТОР -Функция jsonЗаписатьИнициализация(Значение, Знач Стандарт, Знач ПредставленияСсылок) +Функция jsonЗаписатьИнициализация(Значение, Знач Стандарт, Знач ПредставленияСсылок, + Знач МаскироватьСимволыПолностью, Знач МаскироватьКириллицу, + Знач НеявноПриводитьПримитивныеЗначенияКлюча) // Проверка параметров. Если (Не Стандарт = Истина) И (Не Стандарт = Ложь) Тогда @@ -863,7 +832,7 @@ НовоеОписаниеТипов("Строка")); // ТипДопустимыхКлючей. // Типы допустимых ключей. - Если (НастройкаНеявноеПриведениеПримитивныхЗначенийКлюча() = Истина) Тогда + Если НеявноПриводитьПримитивныеЗначенияКлюча = Истина Тогда ВспомогательныеДанные.ТипДопустимыхКлючей = Новый ОписаниеТипов("Null,Булево,Число,Дата,Строка,УникальныйИдентификатор"); КонецЕсли; @@ -881,7 +850,7 @@ КонецЕсли; // Сериализация. - Возврат jsonЗаписать(Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, (НастройкаПолноеМаскированиеСимволов() = Истина), (НастройкаМаскированиеКириллицы() = Истина)); + Возврат jsonЗаписать(Значение, Стандарт, ПредставленияСсылок, ВспомогательныеДанные, Неопределено, Смещение, Отступ, Табуляция, ПереносСтроки, (МаскироватьСимволыПолностью = Истина), (МаскироватьКириллицу = Истина)); КонецФункции // jsonЗаписатьИнициализация() diff --git a/src/json/tests/json-test.os b/src/json/tests/json-test.os index e5d2426..59c1703 100644 --- a/src/json/tests/json-test.os +++ b/src/json/tests/json-test.os @@ -27,8 +27,15 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьПростойJSON"); ВсеТесты.Добавить("ТестДолжен_ПроверитьФайлMockНаЧтение"); ВсеТесты.Добавить("ТестДолжен_ПроверитьФайлMockНаЗапись"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоОбъектПриводитсяКСтруктуре"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСимволыМаскируютсяПолностью"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСимволыНеМаскируются"); + + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоКириллицаМаскируется"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоКириллицаНеМаскируется"); + Возврат ВсеТесты; КонецФункции @@ -65,9 +72,7 @@ ЧтениеТекста.Закрыть(); Объект = _преобразовательJSON.ПрочитатьJSON(СтрокаJSON); - - Сообщить("Тип полученного объекта: " + ТипЗнч(Объект)); - + юТест.ПроверитьРавенство(Тип("Соответствие"), ТипЗнч(Объект)); КонецПроцедуры @@ -108,6 +113,84 @@ КонецПроцедуры +Процедура ТестДолжен_ПроверитьЧтоСимволыМаскируютсяПолностью() Экспорт + + Эталон ="{ + | ""SymbolsToEscape"": ""\u007f\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00ad"", + | ""Cyrillic"": ""АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ"" + |}"; + + Объект = Новый Соответствие; + Объект.Вставить("SymbolsToEscape", ПолучитьСтрокуСимволов(127, 159) + Символ(173)); + Объект.Вставить("Cyrillic", "АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ"); + + СтрокаJSON = _преобразовательJSON.ЗаписатьJSON(Объект); + + юТест.ПроверитьРавенство(Эталон, СтрокаJSON); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьЧтоСимволыНеМаскируются() Экспорт + + СтрокаОсобыхСимволов = ПолучитьСтрокуСимволов(127, 159) + Символ(173); + + Эталон ="{ + | ""SymbolsToEscape"": """ + СтрокаОсобыхСимволов + """, + | ""Cyrillic"": ""АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ"" + |}"; + + Объект = Новый Соответствие; + Объект.Вставить("SymbolsToEscape", СтрокаОсобыхСимволов); + Объект.Вставить("Cyrillic", "АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ"); + + СтрокаJSON = _преобразовательJSON.ЗаписатьJSON(Объект,,,Ложь); + + юТест.ПроверитьРавенство(Эталон, СтрокаJSON); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьЧтоКириллицаМаскируется() Экспорт + + Эталон ="{ + | ""SymbolsToEscape"": ""\u007f\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00ad"", + | ""Cyrillic"": ""\u0410\u0411\u0412\u0413\u0490\u0414\u0402\u0403\u0415\u0400\u0401\u0404\u0416\u0417\u0405\u0418\u040d\u0406\u0407\u0419\u0408\u041a\u041b\u0409\u041c\u041d\u040a\u041e\u041f\u0420\u0421\u0422\u040b\u040c\u0423\u040e\u0424\u0425\u0426\u0427\u040f\u0428\u0429\u042a\u042b\u042c\u042d\u042e\u042f"" + |}"; + + Объект = Новый Соответствие; + Объект.Вставить("SymbolsToEscape", ПолучитьСтрокуСимволов(127, 159) + Символ(173)); + Объект.Вставить("Cyrillic", "АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ"); + + СтрокаJSON = _преобразовательJSON.ЗаписатьJSON(Объект,,,,Истина); + + юТест.ПроверитьРавенство(Эталон, СтрокаJSON); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьЧтоКириллицаНеМаскируется() Экспорт + + Эталон ="{ + | ""SymbolsToEscape"": ""\u007f\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00ad"", + | ""Cyrillic"": ""АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ"" + |}"; + + Объект = Новый Соответствие; + Объект.Вставить("SymbolsToEscape", ПолучитьСтрокуСимволов(127, 159) + Символ(173)); + Объект.Вставить("Cyrillic", "АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ"); + + СтрокаJSON = _преобразовательJSON.ЗаписатьJSON(Объект); + + юТест.ПроверитьРавенство(Эталон, СтрокаJSON); + +КонецПроцедуры + +Функция ПолучитьСтрокуСимволов(НачалоДиапазона, КонецДиапазона) + СтрРезультат = ""; + Для КодСимвола = НачалоДиапазона По КонецДиапазона Цикл + СтрРезультат = СтрРезультат + Символ(КодСимвола); + КонецЦикла; + Возврат СтрРезультат; +КонецФункции + Функция ПривестиОкончанияСтрок(Знач ИсходныйТекст) Возврат СтрЗаменить(ИсходныйТекст, Символы.ВК + Символы.ПС, Символы.ПС); КонецФункции From 5dd35ec03fc921a81a17a4932ac7a518e025f1c3 Mon Sep 17 00:00:00 2001 From: Alexander Kuntashov Date: Fri, 1 Jan 2016 00:38:47 +0300 Subject: [PATCH 31/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=9D=D0=B5=D1=8F=D0=B2=D0=BD=D0=BE=D0=9F=D1=80?= =?UTF-8?q?=D0=B8=D0=B2=D0=BE=D0=B4=D0=B8=D1=82=D1=8C=D0=9F=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D0=B5=D0=97=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=D0=9A=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/json/src/json.os | 8 ++--- src/json/tests/json-test.os | 62 +++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/json/src/json.os b/src/json/src/json.os index be7e9fa..4822017 100644 --- a/src/json/src/json.os +++ b/src/json/src/json.os @@ -306,7 +306,7 @@ МаскироватьСимволыПолностью=Истина, МаскироватьКириллицу=Ложь, НеявноПриводитьПримитивныеЗначенияКлюча=Ложь) Экспорт - Возврат jsonЗаписатьИнициализация(Значение, Стандарт, ПредставленияСсылок, МаскироватьСимволыПолностью, МаскироватьКириллицу, Ложь); + Возврат jsonЗаписатьИнициализация(Значение, Стандарт, ПредставленияСсылок, МаскироватьСимволыПолностью, МаскироватьКириллицу, НеявноПриводитьПримитивныеЗначенияКлюча); КонецФункции // ЗаписатьJSON() @@ -832,8 +832,8 @@ НовоеОписаниеТипов("Строка")); // ТипДопустимыхКлючей. // Типы допустимых ключей. - Если НеявноПриводитьПримитивныеЗначенияКлюча = Истина Тогда - ВспомогательныеДанные.ТипДопустимыхКлючей = Новый ОписаниеТипов("Null,Булево,Число,Дата,Строка,УникальныйИдентификатор"); + Если НеявноПриводитьПримитивныеЗначенияКлюча = Истина Тогда + ВспомогательныеДанные.ТипДопустимыхКлючей = НовоеОписаниеТипов("Null,Булево,Число,Дата,Строка,УникальныйИдентификатор"); КонецЕсли; // форматирование. @@ -1737,4 +1737,4 @@ Длина = Найти(Описание, Символы.ПС); Если Длина Тогда Длина = Длина - Позиция; Иначе Длина = СтрДлина(Описание); КонецЕсли; Возврат НСтр("ru = 'JSON: Невозможно выполнить запрос. '; uk = 'JSON: Неможливо виконати запит. '") + Сред(Описание, Позиция, Длина) + "."; -КонецФункции // ИсключениеНевозможноВыполнитьЗапрос() +КонецФункции // ИсключениеНевозможноВыполнитьЗапрос() \ No newline at end of file diff --git a/src/json/tests/json-test.os b/src/json/tests/json-test.os index 59c1703..00c1a67 100644 --- a/src/json/tests/json-test.os +++ b/src/json/tests/json-test.os @@ -36,6 +36,9 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоКириллицаМаскируется"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоКириллицаНеМаскируется"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоПримитивныеЗначенияКлючейПреобразуютсяКСтроке"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоПримитивныеЗначенияКлючейВызываютИсключение"); + Возврат ВсеТесты; КонецФункции @@ -183,6 +186,65 @@ КонецПроцедуры +Процедура ТестДолжен_ПроверитьЧтоПримитивныеЗначенияКлючейПреобразуютсяКСтроке() Экспорт + + УникальныйИдентификатор = Новый УникальныйИдентификатор; + + Эталон = "{ + | """": ""Null"", + | ""Да"": ""Истина"", + | ""42"": ""Ответ на самый главный вопрос жизни, Вселенной и всего такого"", + | ""31.12.2015 0:00:00"": ""С Новым Годом!"", + | """ + Строка(УникальныйИдентификатор) + """: ""Это GUID"" + |}"; + + Объект = Новый Соответствие; + Объект.Вставить(Null, "Null"); + Объект.Вставить(Истина, "Истина"); + Объект.Вставить(42, "Ответ на самый главный вопрос жизни, Вселенной и всего такого"); + Объект.Вставить(Дата(2015,12,31), "С Новым Годом!"); + Объект.Вставить(УникальныйИдентификатор, "Это GUID"); + + СтрокаJSON = _преобразовательJSON.ЗаписатьJSON(Объект,,,,,Истина); + + юТест.ПроверитьРавенство(Эталон, СтрокаJSON); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьЧтоПримитивныеЗначенияКлючейВызываютИсключение() Экспорт + + юТест.ПроверитьИстину(НедопустимыйТипЗначенияКлючаВызываетИсключение(Null), + "Null-значение использовано в качестве ключа, а должно вызывать исключение"); + + юТест.ПроверитьИстину(НедопустимыйТипЗначенияКлючаВызываетИсключение(Истина), + "Булево значение в использовано качестве ключа, а должно вызывать исключение"); + + юТест.ПроверитьИстину(НедопустимыйТипЗначенияКлючаВызываетИсключение(42), + "Число использовано в качестве ключа, а должно вызывать исключение"); + + юТест.ПроверитьИстину(НедопустимыйТипЗначенияКлючаВызываетИсключение(Дата(2015,12,31)), + "Дата использована в качестве ключа, а должна вызывать исключение"); + + юТест.ПроверитьИстину(НедопустимыйТипЗначенияКлючаВызываетИсключение(Новый УникальныйИдентификатор), + "Уникальный идентификатор использован в качестве ключа, а должно вызывать исключение"); + +КонецПроцедуры + +Функция НедопустимыйТипЗначенияКлючаВызываетИсключение(ЗначениеКлюча) + Объект = Новый Соответствие; + Объект.Вставить(ЗначениеКлюча, "Значение"); + Попытка + СтрокаJSON = _преобразовательJSON.ЗаписатьJSON(Объект); + Возврат Ложь; + Исключение + ОписаниеОшибки = ОписаниеОшибки(); + Если Найти(ОписаниеОшибки, "JSON: Недопустимый тип значения ключа") > 0 Тогда + Возврат Истина; + КонецЕсли; + ВызватьИсключение ОписаниеОшибки; + КонецПопытки +КонецФункции + Функция ПолучитьСтрокуСимволов(НачалоДиапазона, КонецДиапазона) СтрРезультат = ""; Для КодСимвола = НачалоДиапазона По КонецДиапазона Цикл From 13a377561f47445faa9478e3dfca85a2b409e671 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Sat, 9 Jan 2016 00:09:21 +0300 Subject: [PATCH 32/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=B5=D1=80=D0=B5=D1=87=D0=B8=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=A0=D0=B5=D0=B6=D0=B8=D0=BC=D0=92=D1=8B?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=D0=A4=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=20hierarchical=20?= =?UTF-8?q?=D0=B8=20plain?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\267\320\260\321\206\320\270\320\270.os" | 17 +++++++------ ...20\260\320\271\320\273\320\276\320\262.os" | 10 ++++++++ src/gitsync/src/gitsync.os | 2 +- src/gitsync/tests/git-sync-test.os | 24 +++++++++---------- 4 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 "src/gitsync/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\266\320\270\320\274\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262.os" diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 1b8c6f4..133b436 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -17,7 +17,6 @@ Перем мФайлПрограммыРаспаковки; Перем мАвторизацияВХранилищеСредствами1С; Перем ЭтоWindows; -Перем ОписаниеИерархическогоФормата; /////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -80,7 +79,7 @@ ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); ПараметрыЗапуска.Добавить("/Visible"); - Если Формат = ОписаниеИерархическогоФормата Тогда + Если Формат = РежимВыгрузкиФайлов.Иерархический Тогда ПараметрыЗапуска.Добавить("/DumpConfigToFiles """ + КаталогПлоскойВыгрузки + """"); Иначе ПараметрыЗапуска.Добавить("/DumpConfigToFiles """ + КаталогПлоскойВыгрузки + """ -format Plain"); @@ -140,12 +139,12 @@ Переименования.Колонки.Добавить("Источник"); Переименования.Колонки.Добавить("Приемник"); - ИскатьВПодкаталогах = ?(Формат = ОписаниеИерархическогоФормата, Истина, Ложь); + ИскатьВПодкаталогах = ?(Формат = РежимВыгрузкиФайлов.Иерархический, Истина, Ложь); СписокФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы(), ИскатьВПодкаталогах); Лог.Отладка("Найдено файлов выгрузки: "+СписокФайлов.Количество()+" шт."); Для Каждого Файл Из СписокФайлов Цикл ИмяФайлаДляПереименования = Файл.Имя; - Если Формат = ОписаниеИерархическогоФормата Тогда + Если Формат = РежимВыгрузкиФайлов.Иерархический Тогда ИмяНовогоФайла = СтрЗаменить(Файл.ПолноеИмя, КаталогПлоскойВыгрузки, ""); ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="/", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); ИмяНовогоФайла = ?(Лев(ИмяНовогоФайла, 1) ="\", Сред(ИмяНовогоФайла, 2), ИмяНовогоФайла); @@ -809,7 +808,7 @@ // Основная функция синхронизации. Перемещает в git набор коммитов хранилища 1С // -Процедура СинхронизироватьХранилищеКонфигурацийСГит(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = "hierarchical") Экспорт +Процедура СинхронизироватьХранилищеКонфигурацийСГит(Знач КаталогРабочейКопии, Знач ФайлХранилища, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, Знач Формат = Неопределено) Экспорт Лог.Информация("Начало синхронизации с git"); ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ФайлХранилища); @@ -818,6 +817,12 @@ Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия); СледующаяВерсия = ТекущаяВерсия + 1; + Если Формат = Неопределено Тогда + Формат = РежимВыгрузкиФайлов.Авто; + КонецЕсли; + + Лог.Отладка("Используется формат выгрузки " + Формат); + МаксимальнаяВерсияДляРазбора = ОпределитьМаксимальнуюВерсиюСУчетомОграниченияСверху(ТаблицаИсторииХранилища, ТекущаяВерсия, КонечнаяВерсия); Лог.Информация("Номер последней версии в хранилище: " + МаксимальнаяВерсияДляРазбора); @@ -1262,5 +1267,3 @@ Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); ДоменПочтыДляGitПоУмолчанию = "localhost"; - -ОписаниеИерархическогоФормата = "hierarchical"; diff --git "a/src/gitsync/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\266\320\270\320\274\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262.os" "b/src/gitsync/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\266\320\270\320\274\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262.os" new file mode 100644 index 0000000..ed2f1f7 --- /dev/null +++ "b/src/gitsync/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\266\320\270\320\274\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\270\320\244\320\260\320\271\320\273\320\276\320\262.os" @@ -0,0 +1,10 @@ + +Перем Плоский Экспорт; +Перем Иерархический Экспорт; +Перем Авто Экспорт; + +/////////////////////////////////////////////////////////////// + +Плоский = "plain"; +Иерархический = "hierarchical"; +Авто = Плоский; diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index f8ddebd..b54f0c1 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -232,7 +232,7 @@ ЛокальныйКаталогГит = ТекущийКаталог(); КонецЕсли; Если Формат = Неопределено Тогда - Формат = "plain"; + Формат = РежимВыгрузкиФайлов.Авто; КонецЕсли; Лог.Отладка("ПутьКХранилищу = " + ПутьКХранилищу); diff --git a/src/gitsync/tests/git-sync-test.os b/src/gitsync/tests/git-sync-test.os index fc43142..1f4559b 100644 --- a/src/gitsync/tests/git-sync-test.os +++ b/src/gitsync/tests/git-sync-test.os @@ -47,7 +47,7 @@ ВременныеФайлы.Удалить(); КонецПроцедуры -Функция ПолучитьФайлКонфигурацииИзМакета(Знач ИмяМакета = "") +Функция ПолучитьФайлКонфигурацииИзМакета(Знач ИмяМакета = "") Если ИмяМакета = "" Тогда ИмяМакета = "ТестовыйФайлКонфигурации"; @@ -80,7 +80,7 @@ лфайл = Новый Файл(парамПуть); Если Не лфайл.Существует() Тогда Сообщить("Не существует файл <"+допСообщениеОшибки+">"); - Возврат Ложь; + Возврат Ложь; КонецЕсли; Возврат Истина; @@ -98,7 +98,7 @@ ПутьКФайлуКонфигурации = ПолучитьФайлКонфигурацииИзМакета(); - Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки, "plain"); + Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки, РежимВыгрузкиФайлов.Плоский); ФайлПереименований = Новый Файл(ОбъединитьПути(КаталогВыгрузки, "renames.txt")); ФайлКорняМетаданных = Новый Файл(ОбъединитьПути(КаталогВыгрузки, "Configuration.xml")); @@ -108,24 +108,24 @@ КонецПроцедуры -Процедура Тест_ДолженВыгрузитьМодули() Экспорт +Процедура Тест_ДолженВыгрузитьМодули() Экспорт КаталогПлоскойВыгрузки = ВременныеФайлы.СоздатьКаталог(); - Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки, "plain"); + Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки, РежимВыгрузкиФайлов.Плоский); МассивФайлов = НайтиФайлы(КаталогПлоскойВыгрузки,"*.*"); юТест.ПроверитьИстину(МассивФайлов.Количество() > 0, "в каталоге выгрузки модулей 1С <"+КаталогПлоскойВыгрузки+"> должны быть файлы"); КонецПроцедуры -Процедура Тест_ДолженРазложитьМодули1СПоПапкамСогласноИерархииМетаданных() Экспорт +Процедура Тест_ДолженРазложитьМодули1СПоПапкамСогласноИерархииМетаданных() Экспорт КаталогПлоскойВыгрузки = ВременныеФайлы.СоздатьКаталог(); - Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки, "plain"); + Распаковщик.ВыгрузитьМодулиКонфигурации(ПолучитьФайлКонфигурацииИзМакета(), КаталогПлоскойВыгрузки, РежимВыгрузкиФайлов.Плоский); КаталогИерархическойВыгрузки = ВременныеФайлы.СоздатьКаталог(); - Распаковщик.РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, КаталогИерархическойВыгрузки, "plain"); + Распаковщик.РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, КаталогИерархическойВыгрузки, РежимВыгрузкиФайлов.Плоский); ФайлПереименований = Новый Файл(КаталогИерархическойВыгрузки + "\renames.txt"); юТест.ПроверитьИстину(ФайлПереименований.Существует(), "Не удалось разложим модули 1С по иерархии - не существует файл <"+ФайлПереименований.ПолноеИмя+">"); @@ -195,7 +195,7 @@ КонецПроцедуры -Процедура Тест_ДолженПрочитатьФайлВерсийСИменамиПользователейИзХранилища1С() Экспорт +Процедура Тест_ДолженПрочитатьФайлВерсийСИменамиПользователейИзХранилища1С() Экспорт ПутьКФайлуХранилища1С = ПутьКВременномуФайлуХранилища1С(); @@ -332,7 +332,7 @@ КонецПроцедуры -Процедура ТестДолжен_СинхронизироватьХранилищеКонфигурацийСГит() Экспорт +Процедура ТестДолжен_СинхронизироватьХранилищеКонфигурацийСГит() Экспорт ПутьКФайлуХранилища1С = ПутьКВременномуФайлуХранилища1С(); @@ -384,7 +384,7 @@ ПутьКФайлуКонфигурации = ПолучитьФайлКонфигурацииИзМакета(); - Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки, "plain"); + Распаковщик.РазобратьФайлКонфигурации(ПутьКФайлуКонфигурации, КаталогВыгрузки, РежимВыгрузкиФайлов.Плоский); МассивФайлов = НайтиФайлы(КаталогВыгрузки, ПолучитьМаскуВсеФайлы()); юТест.Проверить(МассивФайлов.Количество() > 0, "в каталоге разложения модулей 1С <"+КаталогВыгрузки+"> должны быть файлы"); @@ -493,7 +493,7 @@ Ответ = Новый Структура; Ответ.Вставить("ЛокальныйРепозиторий", ЛокальныйКаталог); - Ответ.Вставить("URLРепозитария", URLРепозитария); + Ответ.Вставить("URLРепозитария", URLРепозитария); Ответ.Вставить("ИмяВетки", ИмяВетки); Возврат Ответ; From 6c2414667332c16d0f17afdc14546eef770b7259 Mon Sep 17 00:00:00 2001 From: Maximov Valery Date: Sun, 10 Jan 2016 13:32:00 +0300 Subject: [PATCH 33/60] Update v8runner.os MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен метод "СконвертироватьФайлКонфигурации". --- src/v8runner/src/v8runner.os | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 08eee86..d88bca8 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -124,6 +124,14 @@ КонецПроцедуры +Процедура СконвертироватьФайлКонфигурации(Знач ФайлКонфигурации) Экспорт + + Параметры = СтандартныеПараметрыЗапускаКонфигуратора(); + Параметры.Добавить("/ConvertFiles """ + ФайлКонфигурации + """"); + ВыполнитьКоманду(Параметры); + +КонецПроцедуры + Процедура СоздатьФайловуюБазу(Знач КаталогБазы) Экспорт Лог.Отладка("Создаю файловую базу "+КаталогБазы); From e7b9d6cc795b170df96eb628183d7b469bcf2c99 Mon Sep 17 00:00:00 2001 From: Maximov Valery Date: Sun, 10 Jan 2016 13:33:02 +0300 Subject: [PATCH 34/60] =?UTF-8?q?Update=20=D0=9C=D0=B5=D0=BD=D0=B5=D0=B4?= =?UTF-8?q?=D0=B6=D0=B5=D1=80=D0=A1=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8.os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В методе "ВыгрузитьМодулиКонфигурации" добавлен код проверки необходимости конвертации файла конфигурации --- ...20\267\320\260\321\206\320\270\320\270.os" | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 133b436..7b71c3e 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -66,7 +66,27 @@ ЛогКонфигуратора = Логирование.ПолучитьЛог("oscript.lib.v8runner"); ЛогКонфигуратора.УстановитьУровень(Лог.Уровень()); - Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь); + Попытка + + Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь); + + Исключение + + // проверим текст ошибки, если текст содержит информацию о необходимости конвертировать + // тогда выполним конвертацию и повторно попытаемся загрузить файл + ТекстОшибки = ВыводКоманды(); + Если Найти(Врег(ТекстОшибки), Врег("Структура конфигурации несовместима с текущей версией программы")) Тогда + + Конфигуратор.СконвертироватьФайлКонфигурации(ФайлКонфигурации); + Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ФайлКонфигурации, Ложь); + + Иначе + + ВызватьИсключение ТекстОшибки; + + КонецЕсли; + + КонецПопытки; Если Не (Новый Файл(КаталогПлоскойВыгрузки).Существует()) Тогда СоздатьКаталог(КаталогПлоскойВыгрузки); From 2c67bfabb22aad9b232c0295fe0b48152a3fb694 Mon Sep 17 00:00:00 2001 From: Maximov Valery Date: Sun, 10 Jan 2016 14:29:38 +0300 Subject: [PATCH 35/60] Update gitsync.os MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил параметр "-branch" для передачи имени ветки git --- src/gitsync/src/gitsync.os | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index b54f0c1..d7be08f 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -50,6 +50,7 @@ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-branch", "<имя ветки git>"); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры @@ -63,6 +64,7 @@ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-branch", "<имя ветки git>"); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры @@ -100,7 +102,8 @@ Парсер.ДобавитьИменованныйПараметр("-email", "<домен почты для пользователей git>"); Парсер.ДобавитьИменованныйПараметр("-v8version", "Маска версии платформы (8.3, 8.3.5, 8.3.6.2299 и т.п.)"); Парсер.ДобавитьИменованныйПараметр("-debug", ""); - Парсер.ДобавитьИменованныйПараметр("-format", ""); + Парсер.ДобавитьИменованныйПараметр("-branch", "<имя ветки git>"); + Парсер.ДобавитьИменованныйПараметр("-format", ""); КонецПроцедуры @@ -120,7 +123,8 @@ Параметры["-v8version"], , , - Параметры["-format"]); + Параметры["-format"], + Параметры["-branch"]); КонецЕсли; @@ -224,23 +228,30 @@ Знач ВерсияПлатформы = Неопределено, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, - Знач Формат = Неопределено) Экспорт + Знач Формат = Неопределено, + Знач ИмяВетки = Неопределено) Экспорт Лог.Информация("Начинаю синхронизацию хранилища 1С и репозитария GIT"); Если ЛокальныйКаталогГит = Неопределено Тогда ЛокальныйКаталогГит = ТекущийКаталог(); КонецЕсли; + Если Формат = Неопределено Тогда Формат = РежимВыгрузкиФайлов.Авто; КонецЕсли; + Если ИмяВетки = Неопределено Тогда + ИмяВетки = "master"; + КонецЕсли; + Лог.Отладка("ПутьКХранилищу = " + ПутьКХранилищу); Лог.Отладка("URLРепозитория = " + URLРепозитория); Лог.Отладка("ЛокальныйКаталогГит = " + ЛокальныйКаталогГит); Лог.Отладка("ДоменПочты = " + ДоменПочты); Лог.Отладка("ВерсияПлатформы = " + ВерсияПлатформы); Лог.Отладка("Формат = " + Формат); + Лог.Отладка("ИмяВетки = " + ИмяВетки); ФайлБазыДанныхХранилища = ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу); @@ -249,7 +260,7 @@ Распаковщик.ДоменПочтыДляGitПоУмолчанию = ДоменПочты; Лог.Информация("Получение изменений с удаленного узла (pull)"); - КодВозврата = Распаковщик.ВыполнитьGitPull(ЛокальныйКаталогГит, URLРепозитория, "master"); + КодВозврата = Распаковщик.ВыполнитьGitPull(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки); Если КодВозврата <> 0 Тогда ВызватьИсключение "Не удалось получить изменения с удаленного узла (код: " + КодВозврата + ")"; КонецЕсли; @@ -258,7 +269,7 @@ Распаковщик.СинхронизироватьХранилищеКонфигурацийСГит(ЛокальныйКаталогГит, ФайлБазыДанныхХранилища, НачальнаяВерсия, КонечнаяВерсия, Формат); Лог.Информация("Отправка изменений на удаленный узел"); - КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, "master"); + КодВозврата = Распаковщик.ВыполнитьGitPush(ЛокальныйКаталогГит, URLРепозитория, ИмяВетки); Если КодВозврата <> 0 Тогда ВызватьИсключение "Не удалось отправить изменения на удаленный узел (код: " + КодВозврата + ")"; КонецЕсли; From 1794541626837a3958bda4704543ba614fa9bb9f Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Mon, 11 Jan 2016 10:00:09 +0300 Subject: [PATCH 36/60] =?UTF-8?q?=D0=9E=D1=88=D0=B8=D0=B1=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D1=81=D1=82=D0=B0=D0=BB=D1=81=D1=8F=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BE=D1=87=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index d7be08f..3a2a99e 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -456,8 +456,6 @@ ПоказатьИнформациюОПараметрахКоманднойСтроки(); Лог.Ошибка("Указаны некорректные аргументы командной строки"); ВременныеФайлы.Удалить(); - К = Новый Консоль; - К.ПрочитатьСтроку(); ЗавершитьРаботу(1); КонецЕсли; ВременныеФайлы.Удалить(); From e36c1f392d9d6a2f776202a5999eb9d0748a5d90 Mon Sep 17 00:00:00 2001 From: Martynenkov Date: Tue, 12 Jan 2016 22:58:37 +0300 Subject: [PATCH 37/60] =?UTF-8?q?v8runner:=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5?= =?UTF-8?q?=D0=B4=D1=83=D1=80=D0=B0=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3?= =?UTF-8?q?=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B1=D0=B0=D0=B7=D1=8B?= =?UTF-8?q?=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B8=D0=B7=20=D1=85?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8=D1=89=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index d88bca8..822511e 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -667,6 +667,25 @@ КонецФункции +Процедура ОбновитьКонфигурациюБазыДанныхИзХранилища(СтрокаСоединения, ПользовательХранилища, ПарольХранилища="") Экспорт + + ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryF """+СтрокаСоединения+""""); + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + + Если Не ПустаяСтрока(ПарольХранилища) Тогда + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; + + ПараметрыСвязиСБазой.Добавить("/ConfigurationRepositoryUpdateCfg"); + ПараметрыСвязиСБазой.Добавить("-force"); + + ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); + + ВыполнитьКоманду(ПараметрыСвязиСБазой); +КонецПроцедуры + ////////////////////////////////////////////////////////////////////////////////////// // Инициализация From e749967054149b8d0421804de6bab05f3f75cc5e Mon Sep 17 00:00:00 2001 From: Maximov Valery Date: Wed, 13 Jan 2016 22:18:22 +0300 Subject: [PATCH 38/60] =?UTF-8?q?Update=20=D0=9C=D0=B5=D0=BD=D0=B5=D0=B4?= =?UTF-8?q?=D0=B6=D0=B5=D1=80=D0=A1=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8.os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправил ошибку "ВыводКомманды" без обращения к конфигуратор --- ...\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 7b71c3e..bc59edc 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -74,7 +74,7 @@ // проверим текст ошибки, если текст содержит информацию о необходимости конвертировать // тогда выполним конвертацию и повторно попытаемся загрузить файл - ТекстОшибки = ВыводКоманды(); + ТекстОшибки = Конфигуратор.ВыводКоманды(); Если Найти(Врег(ТекстОшибки), Врег("Структура конфигурации несовместима с текущей версией программы")) Тогда Конфигуратор.СконвертироватьФайлКонфигурации(ФайлКонфигурации); From 6b2fb12ad240fb3b361b392c1cc1031f27fd695c Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 14 Jan 2016 18:39:28 +0300 Subject: [PATCH 39/60] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=D0=B0=201=D0=A1=20=D0=B8=D0=BD=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D0=B5=D0=B9=20=D0=B2=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=20=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index d88bca8..82a167f 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -550,7 +550,7 @@ КодВозврата = 0; Приложение = ОбернутьВКавычки(ПутьКПлатформе1С()); - Лог.Отладка(Приложение + СтрокаДляЛога); + Лог.Информация(Приложение + СтрокаДляЛога); Если ЭтоWindows = Ложь Тогда СтрокаЗапуска = "sh -c '"+Приложение + СтрокаЗапуска + "'"; From f661e882e7ab6dc1f2f95465cba3a938168d27c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 19 Jan 2016 17:27:37 +0300 Subject: [PATCH 40/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D1=83?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B2=D0=BE=D0=BD=D0=B0=D1=87=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20=D0=B2=20=D0=BE?= =?UTF-8?q?=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 3a2a99e..ad4e18f 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -65,6 +65,7 @@ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-branch", "<имя ветки git>"); + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-firstversion", "<число номер версии начала синхронизации>"); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры @@ -162,7 +163,7 @@ ВызватьИсключение "git init вернул код <"+Результат+">"; КонецЕсли; - НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, Параметры["ПутьКХранилищу"]); + НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, Параметры["ПутьКХранилищу"], Параметры["-firstversion"]); КонецПроцедуры @@ -207,8 +208,11 @@ КонецФункции -Процедура НаполнитьКаталогРабочейКопииСлужебнымиДанными(Знач КаталогРабочейКопии, Знач Распаковщик, Знач ПутьКХранилищу) +Процедура НаполнитьКаталогРабочейКопииСлужебнымиДанными(Знач КаталогРабочейКопии, Знач Распаковщик, Знач ПутьКХранилищу, Знач НомерВерсии = Неопределено) + Если НомерВерсии = Неопределено Тогда + НомерВерсии = ""; //Оставляем пустым для совместимости со старым поведением. + КонецЕсли; КаталогИсходников = Новый Файл(КаталогРабочейКопии); Если Не КаталогИсходников.Существует() Тогда СоздатьКаталог(КаталогИсходников.ПолноеИмя); @@ -217,7 +221,7 @@ КонецЕсли; СгенерироватьФайлAUTHORS(ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу), КаталогИсходников.ПолноеИмя, Распаковщик); - СгенерироватьФайлVERSION(КаталогИсходников.ПолноеИмя, Распаковщик); + СгенерироватьФайлVERSION(КаталогИсходников.ПолноеИмя, Распаковщик, НомерВерсии); КонецПроцедуры @@ -334,7 +338,7 @@ КонецПроцедуры -Процедура СгенерироватьФайлVERSION(Знач КаталогИсходников, Знач Распаковщик) +Процедура СгенерироватьФайлVERSION(Знач КаталогИсходников, Знач Распаковщик, Знач Версия) ФайлВерсий = Новый Файл(ОбъединитьПути(КаталогИсходников, "VERSION")); Если ФайлВерсий.Существует() Тогда @@ -342,7 +346,7 @@ Возврат; КонецЕсли; - Распаковщик.ЗаписатьФайлВерсийГит(ФайлВерсий.Путь); + Распаковщик.ЗаписатьФайлВерсийГит(ФайлВерсий.Путь, Версия); КонецПроцедуры From 81300a8c71615d2dcc7e574fa199a88d2cd34449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 19 Jan 2016 18:10:26 +0300 Subject: [PATCH 41/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=83=D1=8E=20=D0=BA=D0=BE=D0=BC=D0=BD=D0=B0=D0=B4=D1=83=20set?= =?UTF-8?q?-version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index ad4e18f..712d3ec 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -33,6 +33,7 @@ ДобавитьКомандуClone(Парсер); ДобавитьКомандуInit(Парсер); ДобавитьКомандуAll(Парсер); + ДобавитьКомандуSetVersion(Парсер); ДобавитьКомандуHelp(Парсер); ДобавитьАргументыПоУмолчанию(Парсер); @@ -70,6 +71,18 @@ КонецПроцедуры +Процедура ДобавитьКомандуSetVersion(Знач Парсер) + + Команда = Парсер.ОписаниеКоманды("set-version", "Устанавлиает необходимую версию в файл VERSION"); + + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит", "Адрес удаленного репозитория GIT."); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "НомерВерсии", "Номер версии для записи в файл"); + + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); + Парсер.ДобавитьКоманду(Команда); + +КонецПроцедуры + Процедура ДобавитьКомандуAll(Знач Парсер) Команда = Парсер.ОписаниеКоманды("all", "Запускает синхронизацию по нескольким репозиториям"); @@ -145,6 +158,8 @@ СинхронизироватьПоСпискуРепозитариев(ОписаниеКоманды.ЗначенияПараметров); ИначеЕсли ОписаниеКоманды.Команда = "help" Тогда ВывестиСправкуПоКомандам(ОписаниеКоманды.ЗначенияПараметров["КомандаДляСправки"]); + ИначеЕсли ОписаниеКоманды.Команда = "set-version" Тогда + УстановитьНовуюВерсию(ОписаниеКоманды.ЗначенияПараметров); Иначе ВызватьИсключение "Неизвестная команда: " + ОписаниеКоманды.Команда; КонецЕсли; @@ -163,10 +178,19 @@ ВызватьИсключение "git init вернул код <"+Результат+">"; КонецЕсли; - НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, Параметры["ПутьКХранилищу"], Параметры["-firstversion"]); + НаполнитьКаталогРабочейКопииСлужебнымиДанными(КаталогРабочейКопии, Распаковщик, Параметры["ПутьКХранилищу"]); + +КонецПроцедуры + +Процедура УстановитьНовуюВерсию(Знач Параметры) + + Распаковщик = ПолучитьИНастроитьРаспаковщик(Параметры); + ФайлВерсий = Новый Файл(ОбъединитьПути(Параметры["ЛокальныйКаталогГит"], "VERSION")); + Распаковщик.ЗаписатьФайлВерсийГит(ФайлВерсий.Путь, Параметры["НомерВерсии"]); КонецПроцедуры + Процедура КлонироватьРепозитарий(Знач Параметры) Распаковщик = ПолучитьИНастроитьРаспаковщик(Параметры); @@ -208,11 +232,8 @@ КонецФункции -Процедура НаполнитьКаталогРабочейКопииСлужебнымиДанными(Знач КаталогРабочейКопии, Знач Распаковщик, Знач ПутьКХранилищу, Знач НомерВерсии = Неопределено) +Процедура НаполнитьКаталогРабочейКопииСлужебнымиДанными(Знач КаталогРабочейКопии, Знач Распаковщик, Знач ПутьКХранилищу) - Если НомерВерсии = Неопределено Тогда - НомерВерсии = ""; //Оставляем пустым для совместимости со старым поведением. - КонецЕсли; КаталогИсходников = Новый Файл(КаталогРабочейКопии); Если Не КаталогИсходников.Существует() Тогда СоздатьКаталог(КаталогИсходников.ПолноеИмя); @@ -221,7 +242,7 @@ КонецЕсли; СгенерироватьФайлAUTHORS(ПолучитьПутьКБазеДанныхХранилища(ПутьКХранилищу), КаталогИсходников.ПолноеИмя, Распаковщик); - СгенерироватьФайлVERSION(КаталогИсходников.ПолноеИмя, Распаковщик, НомерВерсии); + СгенерироватьФайлVERSION(КаталогИсходников.ПолноеИмя, Распаковщик); КонецПроцедуры @@ -338,7 +359,7 @@ КонецПроцедуры -Процедура СгенерироватьФайлVERSION(Знач КаталогИсходников, Знач Распаковщик, Знач Версия) +Процедура СгенерироватьФайлVERSION(Знач КаталогИсходников, Знач Распаковщик) ФайлВерсий = Новый Файл(ОбъединитьПути(КаталогИсходников, "VERSION")); Если ФайлВерсий.Существует() Тогда @@ -346,7 +367,7 @@ Возврат; КонецЕсли; - Распаковщик.ЗаписатьФайлВерсийГит(ФайлВерсий.Путь, Версия); + Распаковщик.ЗаписатьФайлВерсийГит(ФайлВерсий.Путь); КонецПроцедуры From e9842bc3672f31736b32b9d16ad8a9c72d4945f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 19 Jan 2016 19:45:09 +0300 Subject: [PATCH 42/60] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=81=D0=B5=D0=BC=D0=B0=D0=BD=D1=82=D0=B8=D0=BA?= =?UTF-8?q?=D1=83.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 712d3ec..0ee6d9f 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -75,7 +75,7 @@ Команда = Парсер.ОписаниеКоманды("set-version", "Устанавлиает необходимую версию в файл VERSION"); - Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит", "Адрес удаленного репозитория GIT."); + Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ЛокальныйКаталогГит", "Адрес локального репозитория GIT."); Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "НомерВерсии", "Номер версии для записи в файл"); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); From 440bdb2d9379f652f6fda6a06974cfc320f66784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 19 Jan 2016 19:50:22 +0300 Subject: [PATCH 43/60] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=80=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 0ee6d9f..0fb703f 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -66,7 +66,6 @@ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-branch", "<имя ветки git>"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-firstversion", "<число номер версии начала синхронизации>"); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры From a0aa7b2ff998e770ae4ebedcf561876a00c16f09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 19 Jan 2016 19:52:17 +0300 Subject: [PATCH 44/60] tab vs space --- src/gitsync/src/gitsync.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 0fb703f..75cc96f 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -33,7 +33,7 @@ ДобавитьКомандуClone(Парсер); ДобавитьКомандуInit(Парсер); ДобавитьКомандуAll(Парсер); - ДобавитьКомандуSetVersion(Парсер); + ДобавитьКомандуSetVersion(Парсер); ДобавитьКомандуHelp(Парсер); ДобавитьАргументыПоУмолчанию(Парсер); From 4019ad36f80e99f13f4a54a22ffa1fe23ab497b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Wed, 20 Jan 2016 11:14:30 +0300 Subject: [PATCH 45/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D1=8B=20=D0=B2=20linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" index d0bb762..cb06c4c 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\275\321\213\320\271\320\244\320\260\320\271\320\273.os" @@ -14,7 +14,7 @@ Иначе мПуть = Путь; КонецЕсли; - Кодировка = ?(ЭтоWindows, "cp866", "utf-8"); + Кодировка = ?(ЭтоWindows, "cp866", КодировкаТекста.UTF8NoBOM); мЗаписьТекста = Новый ЗаписьТекста(мПуть, Кодировка); Возврат мПуть; From 4711a5c651515314c62c23960a860fc45ef832d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=83=D1=80=20=D0=90=D1=8E=D1=85=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= Date: Thu, 21 Jan 2016 20:50:37 +0300 Subject: [PATCH 46/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D0=B8=20strings=20fix=20#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d270977..dd061e1 100644 --- a/README.md +++ b/README.md @@ -41,4 +41,4 @@ ###strings -Работа со строками. Фактически является копией общего модуля "СтроковыеФункцииКлиентСервер" из поставки Библиотеки Стандартных Подсистем. +Работа со строками. API библиотеки совместимо с API модуля СтроковыеФункцииКлиентСервер из БСП. From 0348ec43d3267640e05116fc4b890983775269fe Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 22 Jan 2016 15:50:03 +0300 Subject: [PATCH 47/60] =?UTF-8?q?=D0=92=20=D1=81=D1=82=D0=B0=D1=80=D1=88?= =?UTF-8?q?=D0=B8=D1=85=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=D1=85=208.3?= =?UTF-8?q?=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8E=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D0=BD=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=B4=D0=B8=D0=BD=D0=B0=D0=BC=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BA=D0=BB=D1=8E=D1=87=20=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=B2=D1=8B=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 84a4bed..a26a9ff 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -89,10 +89,14 @@ КонецПроцедуры -Процедура ОбновитьКонфигурациюБазыДанных(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина) Экспорт +Процедура ОбновитьКонфигурациюБазыДанных(ПредупрежденияКакОшибки = Ложь, НаСервере = Истина, ДинамическоеОбновление = Ложь) Экспорт ПараметрыСвязиСБазой = СтандартныеПараметрыЗапускаКонфигуратора(); ПараметрыСвязиСБазой.Добавить("/UpdateDBCfg"); + Если Не ДинамическоеОбновление Тогда + ПараметрыСвязиСБазой.Добавить("-Dynamic–"); + КонецЕсли; + Если ПредупрежденияКакОшибки Тогда ПараметрыСвязиСБазой.Добавить("-WarningsAsErrors"); КонецЕсли; From 50d81a2ae140325c1772151f0c3afe39a5172f0f Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 22 Jan 2016 17:20:31 +0300 Subject: [PATCH 48/60] =?UTF-8?q?=D0=A4=D0=B0=D0=B9=D0=BB=20=D0=B2=D1=8B?= =?UTF-8?q?=D1=85=D0=BB=D0=BE=D0=BF=D0=B0=201=D0=A1=20=D0=B8=D0=B4=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BD=D0=B5=20=D0=B2=20UTF-8.=20=D0=A2=D0=B5=D0=BA?= =?UTF-8?q?=D1=83=D1=89=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B1=D1=8B=D0=BB=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=BE=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index a26a9ff..585adef 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -573,7 +573,7 @@ Файл = Новый Файл(ФайлИнформации()); Если Файл.Существует() Тогда - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); + Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя, "windows-1251"); Текст = Чтение.Прочитать(); Чтение.Закрыть(); Иначе From 81713c2eedddb0563d49d874a7a06c97ca029a90 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 22 Jan 2016 17:54:13 +0300 Subject: [PATCH 49/60] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=20=D0=98=D0=BC=D1=8F=D0=92=D0=B5=D1=82=D0=BA?= =?UTF-8?q?=D0=B8,=20=D1=82.=D0=BA.=20=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B5=D1=8F=D1=81=D0=BD=D0=BE=20=D0=BA=D0=B0=D0=BA=20=D0=BE?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BE=D0=BD=D0=BA=D1=80=D0=B5=D1=82=D0=BD=D0=BE?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=BB=D0=B6=D0=B5=D0=BD=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=D1=82=D1=8C.=20see=20#50=20(pull-request)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gitsync/src/gitsync.os | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 75cc96f..05e6a55 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -51,7 +51,6 @@ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-branch", "<имя ветки git>"); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры @@ -65,7 +64,6 @@ Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-email", "<домен почты для пользователей git>"); Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-debug", ""); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-branch", "<имя ветки git>"); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры From 1aefac96e64195dfbad5fb87ba870397295364f9 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 22 Jan 2016 17:54:31 +0300 Subject: [PATCH 50/60] tabs vs spaces --- src/gitsync/src/gitsync.os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gitsync/src/gitsync.os b/src/gitsync/src/gitsync.os index 05e6a55..54bd8ba 100644 --- a/src/gitsync/src/gitsync.os +++ b/src/gitsync/src/gitsync.os @@ -250,7 +250,7 @@ Знач ВерсияПлатформы = Неопределено, Знач НачальнаяВерсия = 0, Знач КонечнаяВерсия = 0, - Знач Формат = Неопределено, + Знач Формат = Неопределено, Знач ИмяВетки = Неопределено) Экспорт Лог.Информация("Начинаю синхронизацию хранилища 1С и репозитария GIT"); From a961d97c57b32738f3f4d7adc88e06cab803f189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Sun, 24 Jan 2016 22:04:46 +0300 Subject: [PATCH 51/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=B1=D0=BE=D1=80=D0=B0=20=D0=B4=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B2=20linux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index 585adef..c996f69 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -573,7 +573,12 @@ Файл = Новый Файл(ФайлИнформации()); Если Файл.Существует() Тогда - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя, "windows-1251"); + Если ЭтоWindows Тогда + Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя, "windows-1251"); + Иначе + Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); + КонецЕсли; + Текст = Чтение.Прочитать(); Чтение.Закрыть(); Иначе From d5f6223bcd07b9873b00b0ef64455b321b957b46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 26 Jan 2016 14:01:25 +0300 Subject: [PATCH 52/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20linux=20=D1=81=20=D1=83=D1=87=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=BA=D0=B0=D0=B2=D1=8B=D1=87=D0=B5=D0=BA=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=B0=D1=85=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\275\320\270\320\267\320\260\321\206\320\270\320\270.os" | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index bc59edc..a4c4d5b 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -356,8 +356,12 @@ Если КаталогРаспаковки = "" тогда КаталогРаспаковки = ВременныеФайлы.СоздатьКаталог(); КонецЕсли; - + СтрокаЗапуска = """"+ФайлПрограммыРаспаковки()+""" -parse """+ФайлДляРаспаковки.ПолноеИмя+""" """+КаталогРаспаковки+""""; + Если ЭтоWindows = Ложь Тогда + СтрокаЗапуска = "sh -c '"+СтрокаЗапуска+"'"; + КонецЕсли; + Лог.Отладка(СтрокаЗапуска); ЗапуститьПриложение(СтрокаЗапуска,,Истина); From eae7bddd2abade03868a60c7673107f88cf5bc72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BE=D1=81=D0=BD=D0=B0=20=D0=95=D0=B2=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= Date: Tue, 26 Jan 2016 17:16:04 +0300 Subject: [PATCH 53/60] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83?= =?UTF-8?q?=20=D0=B1=D1=83=D0=BB=D0=B5=D0=B2=D0=BE=20=D1=81=D0=BE=D0=B3?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D0=BD=D0=BE=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=D0=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...75\320\270\320\267\320\260\321\206\320\270\320\270.os" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index a4c4d5b..03c7947 100644 --- "a/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/gitsync/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -358,7 +358,7 @@ КонецЕсли; СтрокаЗапуска = """"+ФайлПрограммыРаспаковки()+""" -parse """+ФайлДляРаспаковки.ПолноеИмя+""" """+КаталогРаспаковки+""""; - Если ЭтоWindows = Ложь Тогда + Если НЕ ЭтоWindows Тогда СтрокаЗапуска = "sh -c '"+СтрокаЗапуска+"'"; КонецЕсли; Лог.Отладка(СтрокаЗапуска); @@ -383,7 +383,7 @@ КомандныйФайл = СоздатьКомандныйФайл(); ПрефиксЭкспортаПеременной = ?(ЭтоWindows, "set", "export"); - Если ЭтоWindows = Истина Тогда + Если ЭтоWindows Тогда ДобавитьВКомандныйФайл(КомандныйФайл, "cd /d " + ОбернутьВКавычки(КаталогРабочейКопии)); Иначе ДобавитьВКомандныйФайл(КомандныйФайл, "cd " + ОбернутьВКавычки(КаталогРабочейКопии)); @@ -445,7 +445,7 @@ КомандныйФайл = СоздатьКомандныйФайл(); ИмяФайлаЛогаКоммита = ВременныеФайлы.СоздатьФайл("log"); - Если ЭтоWindows = Истина Тогда + Если ЭтоWindows Тогда ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd /d ""%1""", ЛокальныйРепозиторий)); Иначе ДобавитьВКомандныйФайл(КомандныйФайл, СтроковыеФункции.ПодставитьПараметрыВСтроку("cd ""%1""", ЛокальныйРепозиторий)); @@ -1069,7 +1069,7 @@ Функция ФайлПрограммыРаспаковки() Если мФайлПрограммыРаспаковки = Неопределено Тогда - Если ЭтоWindows = Истина Тогда + Если ЭтоWindows Тогда КаталогДвоичныхФайлов = ОбъединитьПути(ТекущийСценарий().Каталог, "..\..\..\bin"); ФайлПрограммы = Новый Файл(ОбъединитьПути(КаталогДвоичныхФайлов, "UnpackV8.exe")); Если Не ФайлПрограммы.Существует() Тогда From f9401f75b8f9e046dab09c005cd2633da90ccfce Mon Sep 17 00:00:00 2001 From: Andrei Ovsiankin Date: Wed, 27 Jan 2016 10:00:34 +0300 Subject: [PATCH 54/60] Create CONTRIBUTION.md --- CONTRIBUTION.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 CONTRIBUTION.md diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md new file mode 100644 index 0000000..3c725b8 --- /dev/null +++ b/CONTRIBUTION.md @@ -0,0 +1 @@ +Здесь будет написано, как правильно дорабатывать проект From bb5bb9a0a0c3d697790290f8bf99ad57c61c93e1 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 27 Jan 2016 10:16:15 +0300 Subject: [PATCH 55/60] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20contribution?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CONTRIBUTION.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md index 3c725b8..02c096b 100644 --- a/CONTRIBUTION.md +++ b/CONTRIBUTION.md @@ -1 +1,28 @@ -Здесь будет написано, как правильно дорабатывать проект +#Руководство по доработке проекта oscript-library + +Репозиторий oscript-library включает в себя так называемую "стандартную библиотеку" пакетов OneScript, которые поставляются вместе с самим интерпретатором OneScript. +В связи с этим, есть два варианта добавления вашего кода в проект: + +* Вы хотите доработать существующий пакет +* Вы хотите добавить свой пакет в стандартную библиотеку + +##Я хочу доработать существующий пакет + +* Создайте issue в oscript-library с описанием того, что вы хотите доработать. Это нужно для того, чтобы исключить двойную работу. Возможно, кто-то начнет делать нечто похожее одновременно с вами. Issue позволит видеть ведущуюся или планирующуюся работу. +* Создайте форк oscript-library в своем аккаунте github +* Создайте ветку в своем форке с названием **feature/issue-<номер issue>-<любой текст на ваш выбор, если надо>** +* Внесите необходимые доработки в своем форке +* Создайте pull-request нажатием на соответствующую кнопку в гитхабе и отправьте его нам +* Команда разработки посмотрит код и, вероятно, внесет дополнения и предложения. +* Внесите в ваш код эти дополнения таким же образом - просто дополнительными коммитами в ту же ветку **featue/*** +* Новый pull-request создавать не надо, дополнения будут видны сразу. +* Когда код будет принят командой, ваши изменения попадут в основную ветку, а ваше имя - в список контрибьюторов oscript-library +* Спасибо! + +##Я хочу добавить свой пакет в стандартную библиотеку + +* Создайте репозитарий на github, поместите в него свою библиотеку +* Создайте issue в oscript-library с предложением к сообществу о включении вашего пакета в стандартную библиотеку +* Мы посмотрим ваш код и если он нам нужен именно в стандартной библиотеке - мы скажем спасибо и с удовольствием его возьмем + +Пакет должен иметь в своем составе файл packagedef с описанием пакета. From e66a5647122e2e76b9f0683136dfce8beed74fd9 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 27 Jan 2016 14:07:23 +0300 Subject: [PATCH 56/60] =?UTF-8?q?=D0=A3=D1=81=D0=BB=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=BD=D1=83=D0=B6=D0=BD=D0=BE.=20see=20https://bitbucket.org/E?= =?UTF-8?q?vilBeaver/1script/commits/51bfe2cddd881b5d497b1b4cf432105c50938?= =?UTF-8?q?000?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/v8runner/src/v8runner.os | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/v8runner/src/v8runner.os b/src/v8runner/src/v8runner.os index c996f69..a26a9ff 100644 --- a/src/v8runner/src/v8runner.os +++ b/src/v8runner/src/v8runner.os @@ -573,12 +573,7 @@ Файл = Новый Файл(ФайлИнформации()); Если Файл.Существует() Тогда - Если ЭтоWindows Тогда - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя, "windows-1251"); - Иначе - Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); - КонецЕсли; - + Чтение = Новый ЧтениеТекста(Файл.ПолноеИмя); Текст = Чтение.Прочитать(); Чтение.Закрыть(); Иначе From 22886ed68486a0956c431884d1e46cb821632b8f Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Wed, 27 Jan 2016 14:27:39 +0300 Subject: [PATCH 57/60] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=20cmdline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cmdline/tests/cmdline-test.os | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cmdline/tests/cmdline-test.os b/src/cmdline/tests/cmdline-test.os index 916e363..dfe5e2b 100644 --- a/src/cmdline/tests/cmdline-test.os +++ b/src/cmdline/tests/cmdline-test.os @@ -263,12 +263,13 @@ ВходнойМассивПараметров = Новый Массив; ВходнойМассивПараметров.Добавить("test"); ВходнойМассивПараметров.Добавить("flag"); + ВходнойМассивПараметров.Добавить("path-value"); Результат = ПарсерКомаднойСтроки.Разобрать(ВходнойМассивПараметров); юТест.ПроверитьНеравенство(Неопределено, Результат, "Команда должна быть разобрана правильно"); юТест.ПроверитьРавенство("test", Результат.Команда, "Команда"); - юТест.ПроверитьРавенство(Неопределено, Результат.ЗначенияПараметров["testpath"], "Значение позиционного параметра testpath"); + юТест.ПроверитьРавенство("path-value", Результат.ЗначенияПараметров["testpath"], "Значение позиционного параметра testpath"); юТест.ПроверитьРавенство(Истина, Результат.ЗначенияПараметров["flag"], "Глобальный параметр-флаг flag"); юТест.ПроверитьРавенство(2, Результат.ЗначенияПараметров.Количество()); From 2c2387f0b642575e46b02c95b209d16f36db3358 Mon Sep 17 00:00:00 2001 From: The Gitter Badger Date: Thu, 28 Jan 2016 17:11:54 +0000 Subject: [PATCH 58/60] Add Gitter badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index dd061e1..ff6decf 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Библиотека полезных скриптов для 1Script +[![Join the chat at https://gitter.im/EvilBeaver/oscript-library](https://badges.gitter.im/EvilBeaver/oscript-library.svg)](https://gitter.im/EvilBeaver/oscript-library?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + Все пакеты библиотеки могут быть подключены с помощью директивы **#Использовать <ИмяПакета>** ## Краткий список и назначение пакетов From 25a4cb494c42f5bfac300ce42a03a49f7bcf1bd7 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 29 Jan 2016 18:03:31 +0300 Subject: [PATCH 59/60] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20gitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d74e21 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode/ From 3484bbc354336a3a883ab00de616f401e092a547 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 4 Feb 2016 18:57:10 +0300 Subject: [PATCH 60/60] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B2=D0=B5=D0=BB=20?= =?UTF-8?q?=D0=BA=20=D0=B5=D0=B4=D0=B8=D0=BD=D0=BE=D0=BC=D1=83=20=D0=BD?= =?UTF-8?q?=D0=BE=D0=BC=D0=B5=D1=80=D1=83=20=D0=B2=D1=81=D0=B5=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D0=B8.=20=D0=94=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B0=D1=87=D0=B8=D0=BD=D0=B0=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=BE=D1=84=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BD=D1=83=D0=BC=D0=B5=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B9=20=D0=B1=D0=B8?= =?UTF-8?q?=D0=B1-=D0=BA=D0=B8=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/asserts/packagedef | 2 +- src/cmdline/packagedef | 2 +- src/gitsync/packagedef | 2 +- src/json/packagedef | 2 +- src/logos/packagedef | 2 +- src/opm/packagedef | 2 +- src/strings/packagedef | 2 +- src/tempfiles/packagedef | 2 +- src/tool1cd/packagedef | 2 +- src/v8runner/packagedef | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/asserts/packagedef b/src/asserts/packagedef index 79ef8b0..b660770 100644 --- a/src/asserts/packagedef +++ b/src/asserts/packagedef @@ -1,6 +1,6 @@  Описание.Имя("asserts") - .Версия("1.0") + .Версия("0.2.1") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("lib.config") \ No newline at end of file diff --git a/src/cmdline/packagedef b/src/cmdline/packagedef index 269602f..1ee814f 100644 --- a/src/cmdline/packagedef +++ b/src/cmdline/packagedef @@ -1,6 +1,6 @@  Описание.Имя("cmdline") - .Версия("1.0.2") + .Версия("0.2.1") .ЗависитОт("logos") .ВключитьФайл("src") .ВключитьФайл("tests") diff --git a/src/gitsync/packagedef b/src/gitsync/packagedef index 497acb3..a106209 100644 --- a/src/gitsync/packagedef +++ b/src/gitsync/packagedef @@ -1,6 +1,6 @@  Описание.Имя("gitsync") - .Версия("1.0") + .Версия("0.2.1") .ЗависитОт("logos") .ЗависитОт("cmdline") .ЗависитОт("tempfiles") diff --git a/src/json/packagedef b/src/json/packagedef index 7921bcb..91648b5 100644 --- a/src/json/packagedef +++ b/src/json/packagedef @@ -1,6 +1,6 @@  Описание.Имя("json") - .Версия("1.0") + .Версия("0.2.1") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("lib.config") \ No newline at end of file diff --git a/src/logos/packagedef b/src/logos/packagedef index d4d4e03..daf06b9 100644 --- a/src/logos/packagedef +++ b/src/logos/packagedef @@ -1,6 +1,6 @@  Описание.Имя("logos") - .Версия("1.0") + .Версия("0.2.1") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("lib.config") \ No newline at end of file diff --git a/src/opm/packagedef b/src/opm/packagedef index 37f629b..f62276e 100644 --- a/src/opm/packagedef +++ b/src/opm/packagedef @@ -1,6 +1,6 @@  Описание.Имя("opm") - .Версия("1.0") + .Версия("0.2.1") .ЗависитОт("logos") .ЗависитОт("cmdline") .ЗависитОт("tempfiles") diff --git a/src/strings/packagedef b/src/strings/packagedef index a0c0c79..5fe0bd8 100644 --- a/src/strings/packagedef +++ b/src/strings/packagedef @@ -1,4 +1,4 @@  Описание.Имя("strings") - .Версия("1.0") + .Версия("0.2.1") .ВключитьФайл("СтроковыеФункции.os") \ No newline at end of file diff --git a/src/tempfiles/packagedef b/src/tempfiles/packagedef index 4c9b519..07a74b5 100644 --- a/src/tempfiles/packagedef +++ b/src/tempfiles/packagedef @@ -1,4 +1,4 @@  Описание.Имя("tempfiles") - .Версия("1.0") + .Версия("0.2.1") .ВключитьФайл("ВременныеФайлы.os") \ No newline at end of file diff --git a/src/tool1cd/packagedef b/src/tool1cd/packagedef index 4b226d8..c833921 100644 --- a/src/tool1cd/packagedef +++ b/src/tool1cd/packagedef @@ -1,6 +1,6 @@  Описание.Имя("tool1cd") - .Версия("1.0") + .Версия("0.2.1") .ЗависитОт("tempfiles") .ЗависитОт("logos") .ВключитьФайл("bin") diff --git a/src/v8runner/packagedef b/src/v8runner/packagedef index e989e51..a96c962 100644 --- a/src/v8runner/packagedef +++ b/src/v8runner/packagedef @@ -1,6 +1,6 @@  Описание.Имя("v8runner") - .Версия("1.0") + .Версия("0.2.1") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("lib.config") \ No newline at end of file