diff --git a/README.md b/README.md index 26f81ac..1e256ab 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ yard releases --user "user" --pwd "pwd" list --app-filter "Библиотека - _--download-limit_ - ограничение количества загружаемых версий за 1 запуск - _--extract_ - флаг распаковки загруженного архива - _--extract-path_ - каталог для распаковки загруженного архива + - _--extract-dir_ - регулярное выражение, отбора каталогов в архиве EFD для распаковки - _--extract-files_ - список файлов для распаковки из архива дистрибутива, разделенный "|" - _--delete_ - флаг удаления загруженного архива после распаковки @@ -102,6 +103,7 @@ yard releases --user "user" --pwd "pwd" get --app-filter "Библиотека - **unpack** (u) - распаковка шаблона конфигурации 1С из EFD-файла дистрибутива конфигурации 1С - _--path_ - путь к дистрибутиву конфигурации 1С - _--extract-path_ - каталог для распаковки загруженного архива + - _--extract-dir_ - регулярное выражение, отбора каталогов в архиве EFD для распаковки - _--extract-files_ - список файлов для распаковки из архива дистрибутива, разделенный "|" - _--app-name_ - имя конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива) - _--app-id_ - идентификатор конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива) @@ -228,6 +230,7 @@ yard upload-all --path ".\tmp\tmplts\SSL31\" --cfname "1cv8.cf" --git-path ".\tm - **КаталогДляСохранения** - каталог для загрузки релизов 1С - **РаспаковыватьEFD** - Истина - если загруженный архив содержит упакованный шаблонконфигурации (содержит файл 1cv8.efd), то он будет распакован - **КаталогДляРаспаковкиEFD** - каталог для распаковки шаблона конфигурации +- **КаталогВАрхивеДляРаспаковкиEFD** - регулярное выражение, отбора каталогов в архиве EFD для распаковки - **ФайлыДляРаспаковкиEFD** - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы - **УдалитьПослеРаспаковкиEFD** - Истина - после рапаковки загруженный архив будет удален @@ -242,6 +245,7 @@ yard upload-all --path ".\tmp\tmplts\SSL31\" --cfname "1cv8.cf" --git-path ".\tm - **Приложение_Версия** - версия конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива) - **ПутьКДистрибутиву** - путь к дистрибутиву конфигурации 1С - **КаталогДляРаспаковкиEFD** - каталог для распаковки шаблона конфигурации +- **КаталогВАрхивеДляРаспаковкиEFD** - регулярное выражение, отбора каталогов в архиве EFD для распаковки - **ФайлыДляРаспаковкиEFD** - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы ### СборщикКонфигураций1С.os diff --git a/examples/docflow2git.json b/examples/docflow2git.json new file mode 100644 index 0000000..9e4f3a7 --- /dev/null +++ b/examples/docflow2git.json @@ -0,0 +1,41 @@ +{ + "ИмяОбработки":"СписокРелизов1С", + "Параметры":{ + "ИмяПользователя" : "user", + "ПарольПользователя" : "P@ssw0rd", + "ФильтрПриложений" : ["Документооборот КОРП.*2\\.1"], + "ФильтрВерсийНачинаяСДаты" : "2020-12-01T00:00:00", + "ФильтрВерсийДоДаты" : "2021-04-01T00:00:00" + }, + "Обработчики":[ + { + "ИмяОбработки":"ЗагрузчикРелизов1С", + "ИдОбработчика":"ЗагрузчикДО", + "Параметры":{ + "ИмяПользователя" : "user", + "ПарольПользователя" : "P@ssw0rd", + "КаталогДляСохранения" : "$workDir\\tmp\\distr", + "РаспаковыватьEFD" : true, + "КаталогДляРаспаковкиEFD" : "$workDir\\tmp\\tmplts", + "КаталогВАрхивеДляРаспаковкиEFD" : "DocMngCorp", + "ФайлыДляРаспаковкиEFD" : "1Cv8.cf", + "УдалитьПослеРаспаковкиEFD" : true + }, + "Обработчики":[ + { + "ИмяОбработки":"ВыгрузкаКаталогаКонфигурацииВГит", + "ИдОбработчика":"ВыгрузкаДО", + "Параметры":{ + "ПутьККаталогуКонфигураций" : "$workDir\\tmp\\tmplts\\DocMngCorp", + "РепозитарийГит" : "$workDir\\tmp\\repo\\DocMngCorp", + "ИмяВеткиГит" : "release_1C", + "КонвертироватьВФорматЕДТ" : true, + "ВерсияЕДТ" : "2021.3.0", + "СнятьСПоддержки" : true, + "ОтносительныйПуть" : "src\\cf" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/packagedef b/packagedef index e68659d..b145157 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("yard") - .Версия("1.5.1") + .Версия("1.6.0") .ВерсияСреды("1.4") .ЗависитОт("logos") .ЗависитОт("asserts") diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" index 80329be..aa80076 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" @@ -17,9 +17,12 @@ // для выгрузки в git Перем ИмяФайлаКонфигурации; // Строка - имя файла конфигурации, по умолчанию "1Cv8.cf" Перем РепозитарийГит; // Строка - путь к репозитарию git +Перем ИмяВеткиГит; // Строка - имя ветки git в которую будет выполняться выгрузка Перем ИмяАвтора; // Строка - имя автора коммита в git Перем ПочтаАвтора; // Строка - почта автора коммита в git Перем КонвертироватьВФорматЕДТ; // Булево - конвертацировать в формат ЕДТ +Перем ВерсияЕДТ; // Строка - верия среды 1С:Enterprise development tools для конвертации +Перем СнятьСПоддержки; // Булево - снять конфигурацию с поддержки Перем ОтносительныйПуть; // Строка - относительный путь к исходникам внутри репозитория Перем База_СтрокаСоединения; // Строка - строка соединения служебной базы 1С // для выполнения выгрузки @@ -94,6 +97,13 @@ "", "путь к репозитарию git"); + ДобавитьОписаниеПараметра(Параметры, + "ИмяВеткиГит", + "Строка", + Ложь, + "base1c", + "имя ветки git в которую будет выполняться выгрузка"); + ДобавитьОписаниеПараметра(Параметры, "ИмяАвтора", "Строка", @@ -115,6 +125,20 @@ Ложь, "Конвертировать в формат ЕДТ"); + ДобавитьОписаниеПараметра(Параметры, + "ВерсияЕДТ", + "Строка", + Ложь, + "", + "версия среды 1С:Enterprise development tools"); + + ДобавитьОписаниеПараметра(Параметры, + "СнятьСПоддержки", + "Булево", + Ложь, + Ложь, + "Снять конфигурацию с поддержки"); + ДобавитьОписаниеПараметра(Параметры, "ОтносительныйПуть", "Строка", @@ -201,10 +225,13 @@ УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьККаталогуКонфигураций", ПараметрыОбработки); УстановитьПараметрОбработкиДанныхИзСтруктуры("ИмяФайлаКонфигурации" , ПараметрыОбработки, "1Cv8.cf"); УстановитьПараметрОбработкиДанныхИзСтруктуры("РепозитарийГит" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ИмяВеткиГит" , ПараметрыОбработки, "base1c"); УстановитьПараметрОбработкиДанныхИзСтруктуры("ИмяАвтора" , ПараметрыОбработки, "1c"); УстановитьПараметрОбработкиДанныхИзСтруктуры("ПочтаАвтора" , ПараметрыОбработки, "1c@1c.ru"); УстановитьПараметрОбработкиДанныхИзСтруктуры("База_СтрокаСоединения" , ПараметрыОбработки); УстановитьПараметрОбработкиДанныхИзСтруктуры("КонвертироватьВФорматЕДТ" , ПараметрыОбработки, Ложь); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ВерсияЕДТ" , ПараметрыОбработки, Неопределено); + УстановитьПараметрОбработкиДанныхИзСтруктуры("СнятьСПоддержки" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ОтносительныйПуть" , ПараметрыОбработки); КонецПроцедуры // УстановитьПараметрыОбработкиДанных() @@ -351,19 +378,29 @@ ПоследняяВерсии = ТекОписание.Версия; ДатаКоммита = Служебный.ДатаPOSIX(ТекОписание.Дата); - СообщениеКоммита = СтрШаблон("Обновление версии конфигурации поставщика на %1", ТекОписание.Версия); + + ВерсииДляОбновления = СтрСоединить(ТекОписание.ВерсииДляОбновления, ", "); + СообщениеКоммита = СтрШаблон("Обновление версии конфигурации поставщика на %1%4%4 + |Страница релиза:%4https://releases.1c.ru%2%4Версии для обновления: %3", + ТекОписание.Версия, + ТекОписание.Путь, + ВерсииДляОбновления, + Символы.ПС); Выгрузка = Новый ВыгрузкаКонфигурацииВГит(); Выгрузка.УстановитьПараметрОбработкиДанных("ВерсияПлатформы" , ВерсияПлатформы); Выгрузка.УстановитьПараметрОбработкиДанных("ПутьККонфигурации", ОбъединитьПути(ТекОписание.КаталогВерсии, ИмяФайлаКонфигурации)); Выгрузка.УстановитьПараметрОбработкиДанных("РепозитарийГит" , РепозитарийГит); + Выгрузка.УстановитьПараметрОбработкиДанных("ИмяВеткиГит" , ИмяВеткиГит); Выгрузка.УстановитьПараметрОбработкиДанных("ИмяАвтора" , ИмяАвтора); Выгрузка.УстановитьПараметрОбработкиДанных("ПочтаАвтора" , ПочтаАвтора); Выгрузка.УстановитьПараметрОбработкиДанных("ДатаКоммита" , ДатаКоммита); Выгрузка.УстановитьПараметрОбработкиДанных("СообщениеКоммита" , СообщениеКоммита); Выгрузка.УстановитьПараметрОбработкиДанных("База_СтрокаСоединения" , База_СтрокаСоединения); Выгрузка.УстановитьПараметрОбработкиДанных("КонвертироватьВФорматЕДТ", КонвертироватьВФорматЕДТ); + Выгрузка.УстановитьПараметрОбработкиДанных("ВерсияЕДТ" , ВерсияЕДТ); + Выгрузка.УстановитьПараметрОбработкиДанных("СнятьСПоддержки" , СнятьСПоддержки); Выгрузка.УстановитьПараметрОбработкиДанных("ОтносительныйПуть" , ОтносительныйПуть); Выгрузка.ОбработатьДанные(); @@ -434,6 +471,10 @@ .ТСтрока() .ВОкружении("YARD_GIT_PATH"); + Команда.Опция("b git-branch", "base1c", "имя ветки git в которую будет выполняться выгрузка") + .ТСтрока() + .ВОкружении("YARD_GIT_BRANCH"); + Команда.Опция("a git-author", "1c", "имя автора коммита в git") .ТСтрока() .ВОкружении("YARD_GIT_AUTHOR"); @@ -449,6 +490,14 @@ Команда.Опция("edt convert-to-edt", Ложь, "конвертировать в едт") .Флаг(); + Команда.Опция("ev edt-version", "", "верия среды 1С:Enterprise development tools для конвертации") + .ТСтрока() + .ВОкружении("YARD_EDT_VERSION"); + + Команда.Опция("rs remove-support", Ложь, "снять конфигруцию с поддержки") + .Флаг() + .ВОкружении("YARD_EDT_REMOVE_SUPPORT"); + Команда.Опция("srp src-relative-path", ОбъединитьПути("src", "cf"), "относительный путь исходников в репозитарии") .ТСтрока() .ВОкружении("YARD_GIT_SRC_PATH"); @@ -470,10 +519,12 @@ УстановитьПараметрОбработкиДанных("ПутьККаталогуКонфигураций", Команда.ЗначениеОпции("path")); УстановитьПараметрОбработкиДанных("ИмяФайлаКонфигурации" , Команда.ЗначениеОпции("cf-name")); УстановитьПараметрОбработкиДанных("РепозитарийГит" , Команда.ЗначениеОпции("git-path")); + УстановитьПараметрОбработкиДанных("ИмяВеткиГит" , Команда.ЗначениеОпции("git-branch")); УстановитьПараметрОбработкиДанных("ИмяАвтора" , Команда.ЗначениеОпции("git-author")); УстановитьПараметрОбработкиДанных("ПочтаАвтора" , Команда.ЗначениеОпции("git-author-email")); УстановитьПараметрОбработкиДанных("База_СтрокаСоединения" , Команда.ЗначениеОпции("ibconnection")); УстановитьПараметрОбработкиДанных("КонвертироватьВФорматЕДТ" , Команда.ЗначениеОпции("convert-to-edt")); + УстановитьПараметрОбработкиДанных("СнятьСПоддержки" , Команда.ЗначениеОпции("remove-support")); УстановитьПараметрОбработкиДанных("ОтносительныйПуть" , Команда.ЗначениеОпции("src-relative-path")); ОбработатьДанные(); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" index e86c9ea..2997f0f 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\321\213\320\263\321\200\321\203\320\267\320\272\320\260\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\270\320\222\320\223\320\270\321\202.os" @@ -29,6 +29,7 @@ Перем СообщениеКоммита; // Строка - сообщение коммита в git Перем База_СтрокаСоединения; // Строка - строка соединения служебной базы 1С Перем КонвертироватьВФорматЕДТ; // Булево - конвертацировать в формат 1С:Enterprise development tools +Перем СнятьСПоддержки; // Булево - снять конфигурацию с поддержки Перем ВерсияЕДТ; // Строка - верия среды 1С:Enterprise development tools для конвертации Перем ОтносительныйПуть; // Строка - относительный путь к исходникам внутри репозитория // для выполнения выгрузки @@ -151,6 +152,13 @@ "", "версия среды 1С:Enterprise development tools"); + ДобавитьОписаниеПараметра(Параметры, + "СнятьСПоддержки", + "Булево", + Ложь, + Ложь, + "снять конфигурацию с поддержки"); + ДобавитьОписаниеПараметра(Параметры, "ОтносительныйПуть", "Строка", @@ -237,6 +245,7 @@ УстановитьПараметрОбработкиДанныхИзСтруктуры("База_СтрокаСоединения" , ПараметрыОбработки); УстановитьПараметрОбработкиДанныхИзСтруктуры("КонвертироватьВФорматЕДТ" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ВерсияЕДТ" , ПараметрыОбработки, Неопределено); + УстановитьПараметрОбработкиДанныхИзСтруктуры("СнятьСПоддержки" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ОтносительныйПуть" , ПараметрыОбработки); КонецПроцедуры // УстановитьПараметрыОбработкиДанных() @@ -311,11 +320,11 @@ ГитРепозиторий.УстановитьРабочийКаталог(РепозитарийГит); СлужебныйКаталогГит = Новый Файл(ОбъединитьПути(РепозитарийГит, ".git")); - МаскаПоискаФайлов = ?(Не КонвертироватьВФорматЕДТ, "*", "src|DT-INF"); - МенеджерВР = Новый МенеджерВременныхФайлов(); + НовыйРепозиторий = Ложь; Если НЕ СлужебныйКаталогГит.Существует() Тогда ГитРепозиторий.Инициализировать(); + НовыйРепозиторий = Истина; КонецЕсли; Если Не ЗначениеЗаполнено(ОтносительныйПуть) Тогда @@ -325,22 +334,28 @@ КонецЕсли; ВремФайл = Новый Файл(КаталогВыгрузки); + НастройкиПроектаEDTСохранены = Ложь; Если ВремФайл.Существует() Тогда + Если КонвертироватьВФорматЕДТ Тогда + ВременныйКаталогСНастройками = ""; + НастройкиПроектаEDTСохранены = СохранитьСлужебныеДанныеЕДТ(КаталогВыгрузки, ВременныйКаталогСНастройками); + КонецЕсли; + ФайлОписания = Новый Файл(ОбъединитьПути(РепозитарийГит, "description.json")); ОписаниеВерсии = Новый Структура("Имя, Версия, Дата"); Если ФайлОписания.Существует() Тогда ОписаниеВерсии = Служебный.ОписаниеРелиза(ФайлОписания.ПолноеИмя); КонецЕсли; - Лог.Информация("[%1]: Начало удаления файлов версии %2 (%3) конфигурации ""%4"" из репозитария ""%5""", - ТипЗнч(ЭтотОбъект), - ОписаниеВерсии.Версия, - Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"), - ОписаниеВерсии.Имя, - КаталогВыгрузки); - Для каждого Маска Из СтрРазделить(МаскаПоискаФайлов, "|") Цикл - УдалитьФайлы(КаталогВыгрузки, Маска); - КонецЦикла; + Если НЕ НовыйРепозиторий Тогда + Лог.Информация("[%1]: Начало удаления файлов версии %2 (%3) конфигурации ""%4"" из репозитария ""%5""", + ТипЗнч(ЭтотОбъект), + ОписаниеВерсии.Версия, + Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"), + ОписаниеВерсии.Имя, + КаталогВыгрузки); + УдалитьФайлы(КаталогВыгрузки, "*"); + КонецЕсли; КонецЕсли; Распаковщик.ОбеспечитьКаталог(КаталогВыгрузки); @@ -355,7 +370,7 @@ Лог.Информация("[%1]: Начало загрузки версии %2 (%3) конфигурации ""%4"" из файла ""%5""", ТипЗнч(ЭтотОбъект), ОписаниеВерсии.Версия, - Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"), + Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"), ОписаниеВерсии.Имя, ПутьККонфигурации); @@ -365,17 +380,16 @@ Конфигуратор.ЗагрузитьКонфигурациюИзФайла(ПутьККонфигурации); + МенеджерВР = Новый МенеджерВременныхФайлов(); + КаталогВыгрузкиИсходников = ?(КонвертироватьВФорматЕДТ, МенеджерВР.СоздатьКаталог("config-src"), КаталогВыгрузки); - ШаблонТекстаВыгрузки = ?( - КонвертироватьВФорматЕДТ, - "[%1]: Начало выгрузки в файлы версии %2 (%3) конфигурации ""%4"" во временный каталог ""%5""", - "[%1]: Начало выгрузки в файлы версии %2 (%3) конфигурации ""%4"" в репозитарий ""%5""" - ); - Лог.Информация(ШаблонТекстаВыгрузки, + + Лог.Информация("[%1]: Начало выгрузки в файлы версии %2 (%3) конфигурации ""%4"" %5 ""%6""", ТипЗнч(ЭтотОбъект), ОписаниеВерсии.Версия, - Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"), + Формат(ОписаниеВерсии.Дата, "ДФ=dd.MM.yyyy; ДП=-"), ОписаниеВерсии.Имя, + ?(КонвертироватьВФорматЕДТ, "во временный каталог", "в репозитарий"), КаталогВыгрузкиИсходников); Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузкиИсходников); @@ -391,21 +405,50 @@ Если КонвертироватьВФорматЕДТ Тогда СконвертироватьВФорматЕДТ(КаталогВыгрузкиИсходников, КаталогВыгрузки, ВерсияЕДТ); + Если НастройкиПроектаEDTСохранены Тогда + ВосстановитьСлужебныеДанныеЕДТ(КаталогВыгрузки, ВременныйКаталогСНастройками) + КонецЕсли; + Если СнятьСПоддержки Тогда + ФайлПоддержки = Новый Файл(ОбъединитьПути(КаталогВыгрузки, "src", "Configuration", "ParentConfigurations.bin")); + УдалитьФайлы(ФайлПоддержки.ПолноеИмя); + КонецЕсли; + КонецЕсли; + + Если Гит_ВеткаСуществует(ГитРепозиторий, ИмяВеткиГит) И НЕ ГитРепозиторий.ПолучитьТекущуюВетку() = ИмяВеткиГит Тогда + Лог.Информация("[%1]: Переход на ветку GIT ""%2"" в репозитарии ""%3""", + ТипЗнч(ЭтотОбъект), + ИмяВеткиГит, + ГитРепозиторий.ПолучитьРабочийКаталог()); + ГитРепозиторий.ПерейтиВВетку(ИмяВеткиГит, , Истина); + ИначеЕсли НЕ НовыйРепозиторий Тогда + Лог.Информация("[%1]: Создание ветки GIT ""%2"" в репозитарии ""%3""", + ТипЗнч(ЭтотОбъект), + ИмяВеткиГит, + ГитРепозиторий.ПолучитьРабочийКаталог()); + ГитРепозиторий.ПерейтиВВетку(ИмяВеткиГит, Истина); КонецЕсли; Лог.Информация("[%1]: Начало добавления изменений в индекс Git", ТипЗнч(ЭтотОбъект)); ГитРепозиторий.ДобавитьФайлВИндекс("."); - ГитРепозиторий.УстановитьНастройку("user.name", ИмяАвтора); - ГитРепозиторий.УстановитьНастройку("user.email", ПочтаАвтора); - ПредставлениеАвтора = ИмяАвтора + " <" + ПочтаАвтора + ">"; - + Лог.Информация("[%1]: Начало помещения изменений в Git", ТипЗнч(ЭтотОбъект)); + ГитРепозиторий.УстановитьНастройку("user.name", ИмяАвтора); + ГитРепозиторий.УстановитьНастройку("user.email", ПочтаАвтора); + ПредставлениеАвтора = СтрШаблон("%1 <%2>", ИмяАвтора, ПочтаАвтора); ГитРепозиторий.Закоммитить(СообщениеКоммита, Истина, , ПредставлениеАвтора, ДатаКоммита, , ДатаКоммита); Лог.Информация("[%1]: Помещение изменений в Git завершено", ТипЗнч(ЭтотОбъект)); + Если НовыйРепозиторий Тогда + Лог.Информация("[%1]: Создание ветки GIT ""%2"" в репозитарии ""%3""", + ТипЗнч(ЭтотОбъект), + ИмяВеткиГит, + ГитРепозиторий.ПолучитьРабочийКаталог()); + ГитРепозиторий.ПерейтиВВетку(ИмяВеткиГит, Истина); + КонецЕсли; + МенеджерВР.Удалить(); ПродолжениеОбработкиДанныхВызовМенеджера(КаталогВыгрузки); @@ -497,6 +540,10 @@ .ТСтрока() .ВОкружении("YARD_EDT_VERSION"); + Команда.Опция("rs remove-support", Ложь, "снять конфигруцию с поддержки") + .Флаг() + .ВОкружении("YARD_EDT_REMOVE_SUPPORT"); + Команда.Опция("srp src-relative-path", ОбъединитьПути("src", "cf"), "относительный путь исходников в репозитарии") .ТСтрока() .ВОкружении("YARD_GIT_SRC_PATH"); @@ -524,6 +571,7 @@ УстановитьПараметрОбработкиДанных("СообщениеКоммита" , Команда.ЗначениеОпции("git-commit-message")); УстановитьПараметрОбработкиДанных("База_СтрокаСоединения" , Команда.ЗначениеОпции("ibconnection")); УстановитьПараметрОбработкиДанных("КонвертироватьВФорматЕДТ", Команда.ЗначениеОпции("convert-to-edt")); + УстановитьПараметрОбработкиДанных("СнятьСПоддержки" , Команда.ЗначениеОпции("remove-support")); УстановитьПараметрОбработкиДанных("ВерсияЕДТ" , Команда.ЗначениеОпции("edt-version")); УстановитьПараметрОбработкиДанных("ОтносительныйПуть" , Команда.ЗначениеОпции("src-relative-path")); @@ -673,7 +721,7 @@ ПараметрыЗапускаЕДТ.Добавить("workspace import"); ПараметрыЗапускаЕДТ.Добавить("--configuration-files"); ПараметрыЗапускаЕДТ.Добавить(КаталогВФорматеКонфигуратора); - ПараметрыЗапускаЕДТ.Добавить("--project-name tmp"); + ПараметрыЗапускаЕДТ.Добавить("--project " + КаталогВФорматеЕДТ); ПараметрыЗапускаЕДТ.Добавить("--workspace-location"); ПараметрыЗапускаЕДТ.Добавить(ВоркСпейсЕДТ); @@ -689,22 +737,88 @@ ВызватьИсключение Команда.ПолучитьВывод(); КонецЕсли; - МаскаПоискаФайлов = "src|DT-INF"; - Для Каждого Маска Из СтрРазделить(МаскаПоискаФайлов, "|") Цикл - ФайлыКПеремещению = НайтиФайлы(ОбъединитьПути(ВоркСпейсЕДТ, "tmp"), Маска); - Для каждого Файл Из ФайлыКПеремещению Цикл - - ФС.КопироватьСодержимоеКаталога(Файл.ПолноеИмя, ОбъединитьПути(КаталогВФорматеЕДТ, Файл.Имя)); - - КонецЦикла; - КонецЦикла; - МенеджерВР.Удалить(); Лог.Информация("[%1]: Завершена конвертация в формат ЕДТ", ТипЗнч(ЭтотОбъект)); КонецПроцедуры +// Процедура - Проверяет существование указанной ветки в репозитарии GIT +// +// Параметры: +// ГитРепозитарий - ГитРепозитарий - объект управления репозитарием GIT +// Ветка - Строка - имя ветки GIT +// +Функция Гит_ВеткаСуществует(ГитРепозитарий, Ветка) + + ТаблицаВеток = ГитРепозитарий.ПолучитьСписокВеток(); + Возврат ТаблицаВеток.НайтиСтроки(Новый Структура("Имя", Ветка)).Количество() > 0; + +КонецФункции // Гит_ВеткаСуществует() + +// Функция - Копирует служебные данные EDT во временный каталог +// +// Параметры: +// КаталогВыгрузки - Строка - исходный каталог проекта +// КаталогСНастройками - Строка - (возвр.) временный каталог для хранения служебных данных +// +// Возвращаемое значение: +// Булево - Истина - служебные данные успешно скопированы +// +Функция СохранитьСлужебныеДанныеЕДТ(КаталогВыгрузки, КаталогСНастройками = "") + + МенеджерВР = Новый МенеджерВременныхФайлов(); + + КаталогНастроекПроекта = ОбъединитьПути(КаталогВыгрузки, ".settings"); + + ВремФайл = Новый Файл(КаталогНастроекПроекта); + Если НЕ ВремФайл.Существует() Тогда + Возврат Ложь; + КонецЕсли; + + КаталогСНастройками = МенеджерВР.СоздатьКаталог("project-settings"); + ФС.КопироватьСодержимоеКаталога(КаталогНастроекПроекта, ОбъединитьПути(КаталогСНастройками, ".settings")); + + ФайлПроекта = ОбъединитьПути(КаталогВыгрузки, ".project"); + ВремФайл = Новый Файл(ФайлПроекта); + Если НЕ ВремФайл.Существует() Тогда + Возврат Ложь; + КонецЕсли; + + КопироватьФайл(ФайлПроекта, ОбъединитьПути(КаталогСНастройками, ".project")); + + Возврат Истина; + +КонецФункции // СохранитьСлужебныеДанныеЕДТ() + +// Функция - Восстанавливает служебные данные EDT во временный каталог +// +// Параметры: +// КаталогВыгрузки - Строка - исходный каталог проекта +// КаталогСНастройками - Строка - временный каталог, содержащий служебне данные +// +Процедура ВосстановитьСлужебныеДанныеЕДТ(КаталогВыгрузки, КаталогСНастройками = "") + + КаталогНастроекПроекта = ОбъединитьПути(КаталогВыгрузки, ".settings"); + + ВремФайл = Новый Файл(КаталогНастроекПроекта); + Если ВремФайл.Существует() Тогда + УдалитьФайлы(КаталогНастроекПроекта, "*"); + КонецЕсли; + + ФС.КопироватьСодержимоеКаталога(ОбъединитьПути(КаталогСНастройками, ".settings"), КаталогНастроекПроекта); + + ФайлПроекта = ОбъединитьПути(КаталогВыгрузки, ".project"); + + ВремФайл = Новый Файл(ФайлПроекта); + Если ВремФайл.Существует() Тогда + УдалитьФайлы(ФайлПроекта); + КонецЕсли; + + КопироватьФайл(ОбъединитьПути(КаталогСНастройками, ".project"), ФайлПроекта); + +КонецПроцедуры // ВосстановитьСлужебныеДанныеЕДТ() + #КонецОбласти // СлужебныеПроцедурыИФункции #Область ОбработчикиСобытий diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" index 1b35de0..fee4914 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" @@ -38,14 +38,17 @@ // в каталоге для загрузки релизы // (проверяются файлы description.json) Перем ОграничениеКоличества; // Число - ограничение количества загружаемых за 1 раз версий -Перем РаспаковыватьEFD; // Булево - Истина - если загруженный архив содержит упакованный шаблон - // конфигурации (содержит файл 1cv8.efd), - // то он будет распакован -Перем КаталогДляРаспаковкиEFD; // Строка - каталог для распаковки шаблона конфигурации -Перем ФайлыДляРаспаковкиEFD; // Массив(Строка) - список файлов для распаковки из архива EFD дистрибутива - // конфигурации, если не указан, то распаковываются все файлы -Перем УдалитьПослеРаспаковкиEFD;// Булево - Истина - после рапаковки загруженный архив будет удален -Перем ПолучатьБетаВерсии; // Булево - Истина - будут получены ознакомительные версии + +Перем РаспаковыватьEFD; // Булево - Истина - если загруженный архив содержит упакованный шаблон + // конфигурации (содержит файл 1cv8.efd), + // то он будет распакован +Перем КаталогДляРаспаковкиEFD; // Строка - каталог для распаковки шаблона конфигурации +Перем КаталогВАрхивеДляРаспаковкиEFD; // Строка - регулярное выражение, отбора каталогов + // в архиве EFD для распаковки +Перем ФайлыДляРаспаковкиEFD; // Массив(Строка) - список файлов для распаковки из архива EFD дистрибутива + // конфигурации, если не указан, то распаковываются все файлы +Перем УдалитьПослеРаспаковкиEFD; // Булево - Истина - после рапаковки загруженный архив будет удален +Перем ПолучатьБетаВерсии; // Булево - Истина - будут получены ознакомительные версии #Область ПрограммныйИнтерфейс @@ -188,6 +191,14 @@ "", "каталог для распаковки шаблона конфигурации"); + ДобавитьОписаниеПараметра(Параметры, + "КаталогВАрхивеДляРаспаковкиEFD", + "Строка", + Ложь, + "", + "регулярное выражение, отбора каталогов + |в архиве EFD для распаковки"); + ДобавитьОписаниеПараметра(Параметры, "ФайлыДляРаспаковкиEFD", "Массив", @@ -279,20 +290,21 @@ ПараметрыОбработки = НовыеПараметры; - УстановитьПараметрОбработкиДанныхИзСтруктуры("ИмяПользователя" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ПарольПользователя" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ФильтрВерсийНачинаяСДаты" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ФильтрВерсийДоДаты" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ПолучатьБетаВерсии" , ПараметрыОбработки, Ложь); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ФильтрДистрибутива" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляСохранения" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("НачатьСПоследнейВерсии" , ПараметрыОбработки, Ложь); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ЗагружатьСуществующие" , ПараметрыОбработки, Ложь); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ОграничениеКоличества" , ПараметрыОбработки, 0); - УстановитьПараметрОбработкиДанныхИзСтруктуры("РаспаковыватьEFD" , ПараметрыОбработки, Ложь); - УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиEFD" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ФайлыДляРаспаковкиEFD" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("УдалитьПослеРаспаковкиEFD", ПараметрыОбработки, Ложь); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ИмяПользователя" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ПарольПользователя" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ФильтрВерсийНачинаяСДаты" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ФильтрВерсийДоДаты" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ПолучатьБетаВерсии" , ПараметрыОбработки, Ложь); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ФильтрДистрибутива" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляСохранения" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("НачатьСПоследнейВерсии" , ПараметрыОбработки, Ложь); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ЗагружатьСуществующие" , ПараметрыОбработки, Ложь); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ОграничениеКоличества" , ПараметрыОбработки, 0); + УстановитьПараметрОбработкиДанныхИзСтруктуры("РаспаковыватьEFD" , ПараметрыОбработки, Ложь); + УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогВАрхивеДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ФайлыДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("УдалитьПослеРаспаковкиEFD" , ПараметрыОбработки, Ложь); ФильтрПриложений = Новый Массив(); Если ПараметрыОбработки.Свойство("ФильтрПриложений") Тогда @@ -611,14 +623,15 @@ Служебный.УбратьКавычки(ВремФильтрДистрибутива); УстановитьПараметрОбработкиДанных("ФильтрДистрибутива" , ВремФильтрДистрибутива); - УстановитьПараметрОбработкиДанных("КаталогДляСохранения" , Команда.ЗначениеОпции("path")); - УстановитьПараметрОбработкиДанных("НачатьСПоследнейВерсии" , Команда.ЗначениеОпции("from-last-version")); - УстановитьПараметрОбработкиДанных("ЗагружатьСуществующие" , Команда.ЗначениеОпции("download-existing")); - УстановитьПараметрОбработкиДанных("ОграничениеКоличества" , Команда.ЗначениеОпции("download-limit")); - УстановитьПараметрОбработкиДанных("РаспаковыватьEFD" , Команда.ЗначениеОпции("extract")); - УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-path")); - УстановитьПараметрОбработкиДанных("УдалитьПослеРаспаковкиEFD", Команда.ЗначениеОпции("delete")); - УстановитьПараметрОбработкиДанных("ПолучатьБетаВерсии" , Команда.ЗначениеОпции("get-beta-versions")); + УстановитьПараметрОбработкиДанных("КаталогДляСохранения" , Команда.ЗначениеОпции("path")); + УстановитьПараметрОбработкиДанных("НачатьСПоследнейВерсии" , Команда.ЗначениеОпции("from-last-version")); + УстановитьПараметрОбработкиДанных("ЗагружатьСуществующие" , Команда.ЗначениеОпции("download-existing")); + УстановитьПараметрОбработкиДанных("ОграничениеКоличества" , Команда.ЗначениеОпции("download-limit")); + УстановитьПараметрОбработкиДанных("РаспаковыватьEFD" , Команда.ЗначениеОпции("extract")); + УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-path")); + УстановитьПараметрОбработкиДанных("УдалитьПослеРаспаковкиEFD" , Команда.ЗначениеОпции("delete")); + УстановитьПараметрОбработкиДанных("ПолучатьБетаВерсии" , Команда.ЗначениеОпции("get-beta-versions")); + УстановитьПараметрОбработкиДанных("КаталогВАрхивеДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-dir")); ВремФайлы = СтрРазделить(Команда.ЗначениеОпции("extract-files"), "|", Ложь); УстановитьПараметрОбработкиДанных("ФайлыДляРаспаковкиEFD" , ВремФайлы); @@ -841,15 +854,17 @@ РаспаковщикРелиза = Новый РаспаковщикРелизов1С(); РаспаковщикРелиза.УстановитьПараметрыОбработкиДанных(ПараметрыОбработки); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Имя" , ОписаниеВерсии.Имя); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Ид" , ОписаниеВерсии.Идентификатор); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Версия" , ОписаниеВерсии.Версия); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ПутьКДистрибутиву" , ФайлАрхива.Путь); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD", КаталогДляРаспаковкиEFD); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Имя" , ОписаниеВерсии.Имя); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Ид" , ОписаниеВерсии.Идентификатор); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Версия" , ОписаниеВерсии.Версия); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ПутьКДистрибутиву" , ФайлАрхива.Путь); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , КаталогДляРаспаковкиEFD); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогВАрхивеДляРаспаковкиEFD", КаталогВАрхивеДляРаспаковкиEFD); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ФайлыДляРаспаковкиEFD" , ФайлыДляРаспаковкиEFD); РаспаковщикРелиза.ОбработатьДанные(); Если УдалитьПослеРаспаковкиEFD Тогда - УдалитьФайлы(ФайлАрхива.Путь, "*.*"); + УдалитьФайлы(ФайлАрхива.Путь, ПолучитьМаскуВсеФайлы()); УдалитьФайлы(ФайлАрхива.Путь); Лог.Информация("[%1]: Удален дистрибутив ""%2""", СокрЛП(ЭтотОбъект), ФайлАрхива.Путь); КонецЕсли; @@ -948,8 +963,6 @@ ОбъединитьПути(КаталогДляСохранения, ОписаниеВерсии.Идентификатор)); Возврат Ложь; КонецЕсли; - Иначе - Возврат Истина; КонецЕсли; Если ЗагруженныеВерсииПриложения.Найти(ОписаниеВерсии.Версия) = Неопределено Тогда diff --git "a/src/\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\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\224\320\260\320\275\320\275\321\213\321\205.os" "b/src/\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\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\224\320\260\320\275\320\275\321\213\321\205.os" index a8e24ff..38c2d7d 100644 --- "a/src/\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\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\224\320\260\320\275\320\275\321\213\321\205.os" +++ "b/src/\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\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\224\320\260\320\275\320\275\321\213\321\205.os" @@ -194,7 +194,7 @@ УстановитьПараметрыОбработчика(ОписаниеОбработчика); Если ОписаниеОбработчика.Свойство("ПроцедураОбработки") Тогда - Выполнить("ОписаниеОбработчика.Обработка." + ОписаниеОбработчика.ПроцедураОбработки + "()"); + Выполнить(СтрШаблон("ОписаниеОбработчика.Обработка.%1()", ОписаниеОбработчика.ПроцедураОбработки)); Иначе ОписаниеОбработчика.Обработка.ОбработатьДанные(); КонецЕсли; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\276\320\267\321\200\320\265\320\262\320\260\321\202\320\265\320\273\321\214\320\241\320\260\320\271\321\202\320\2601\320\241.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\276\320\267\321\200\320\265\320\262\320\260\321\202\320\265\320\273\321\214\320\241\320\260\320\271\321\202\320\2601\320\241.os" index df873e9..df4cb1b 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\276\320\267\321\200\320\265\320\262\320\260\321\202\320\265\320\273\321\214\320\241\320\260\320\271\321\202\320\2601\320\241.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\276\320\267\321\200\320\265\320\262\320\260\321\202\320\265\320\273\321\214\320\241\320\260\320\271\321\202\320\2601\320\241.os" @@ -73,7 +73,7 @@ Служебный.ОчиститьТекстСтраницыHTML(СтраницаКонфигураций); - СтрокиКонфигураций = НайтиСовпаденияВТексте(СтраницаКонфигураций, ШаблонПоискаСтрокКонфигураций); + СтрокиКонфигураций = Служебный.НайтиСовпаденияВТексте(СтраницаКонфигураций, ШаблонПоискаСтрокКонфигураций); СписокКонфигураций = Новый Массив(); @@ -85,7 +85,7 @@ ТекстСтрокиКонфигурации = ТекСтрокаКонфигурации.Группы[0].Значение; - НайденныеОписания = НайтиСовпаденияВТексте(ТекстСтрокиКонфигурации, ШаблонПоискаКонфигураций); + НайденныеОписания = Служебный.НайтиСовпаденияВТексте(ТекстСтрокиКонфигурации, ШаблонПоискаКонфигураций); Если НайденныеОписания.Количество() = 0 ИЛИ НайденныеОписания[0].Группы.Количество() < 6 Тогда @@ -144,7 +144,7 @@ Знач НачальнаяДата = '00010101000000', Знач КонечнаяДата = '00010101000000') - КолонкиБетаВерсий = НайтиСовпаденияВТексте(СтрокаКонфигурации, ШаблонПоискаКолонокБетаВерсий); + КолонкиБетаВерсий = Служебный.НайтиСовпаденияВТексте(СтрокаКонфигурации, ШаблонПоискаКолонокБетаВерсий); СписокБетаВерсий = Новый Массив(); @@ -152,8 +152,8 @@ Возврат СписокБетаВерсий; КонецЕсли; - СсылкиБетаВерсий = НайтиСовпаденияВТексте(КолонкиБетаВерсий[0].Группы[1].Значение, ШаблонПоискаСсылокБетаВерсий); - ДатыБетаВерсий = НайтиСовпаденияВТексте(КолонкиБетаВерсий[0].Группы[2].Значение, ШаблонПоискаДатБетаВерсий); + СсылкиБетаВерсий = Служебный.НайтиСовпаденияВТексте(КолонкиБетаВерсий[0].Группы[1].Значение, ШаблонПоискаСсылокБетаВерсий); + ДатыБетаВерсий = Служебный.НайтиСовпаденияВТексте(КолонкиБетаВерсий[0].Группы[2].Значение, ШаблонПоискаДатБетаВерсий); Для й = 0 По СсылкиБетаВерсий.Количество() - 1 Цикл @@ -211,7 +211,7 @@ СтраницаВерсий = ПолучитьСтраницуСайта(СервисРелизов, АдресРесурса); - Совпадения = НайтиСовпаденияВТексте(СтраницаВерсий, ШаблонПоискаВерсий); + Совпадения = Служебный.НайтиСовпаденияВТексте(СтраницаВерсий, ШаблонПоискаВерсий); СписокВерсий = Новый Массив(); Если Совпадения.Количество() > 0 Тогда @@ -288,7 +288,7 @@ СтраницаВерсии = ПолучитьСтраницуСайта(СервисРелизов, АдресРесурса); - Совпадения = НайтиСовпаденияВТексте(СтраницаВерсии, ШаблонПоискаАдресаСтраницыЗагрузки); + Совпадения = Служебный.НайтиСовпаденияВТексте(СтраницаВерсии, ШаблонПоискаАдресаСтраницыЗагрузки); СписокСсылок = Новый Массив(); Если Совпадения.Количество() > 0 Тогда @@ -309,7 +309,7 @@ СтраницаЗагрузки = ПолучитьСтраницуСайта(СервисРелизов, ТекСсылка); - СовпаденияДляЗагрузки = НайтиСовпаденияВТексте(СтраницаЗагрузки, ШаблонПоискаСсылкиДляЗагрузки); + СовпаденияДляЗагрузки = Служебный.НайтиСовпаденияВТексте(СтраницаЗагрузки, ШаблонПоискаСсылкиДляЗагрузки); Если СовпаденияДляЗагрузки.Количество() = 0 Тогда Продолжить; @@ -467,16 +467,14 @@ // Функция ПолучитьСтрокуРегистрации(Знач Текст, Знач Имя, Знач Пароль) - Совпадения = НайтиСовпаденияВТексте(Текст, ШаблонПоискаСтрокиРегистрации); + Совпадения = Служебный.НайтиСовпаденияВТексте(Текст, ШаблонПоискаСтрокиРегистрации); - execution = ""; + Токен = ""; Если Совпадения.Количество() > 0 Тогда - execution = Совпадения[0].Группы[1].Значение; + Токен = Совпадения[0].Группы[1].Значение; КонецЕсли; - СтрокаРегистрации = СтрШаблон(ШаблонСтрокиРегистрации, Имя, Пароль, execution); - - Возврат СтрокаРегистрации; + Возврат СтрШаблон(ШаблонСтрокиРегистрации, Имя, Пароль, Токен); КонецФункции // ПолучитьСтрокуРегистрации() @@ -532,22 +530,6 @@ КонецФункции // ЗапросКСайту() -// Функция - ищет совпадения в тексте по указанному регулярному выражению -// -// Параметры: -// Текст - Строка - текст, вкотором выполняется поиск -// Шаблон - Строка - регулярное выражение -// -// Возвращаемое значение: -// КоллекцияСовпаденийРегулярногоВыражения - найденные совпадения -// -Функция НайтиСовпаденияВТексте(Текст, Шаблон) - - РВ = Новый РегулярноеВыражение(Шаблон); - Возврат РВ.НайтиСовпадения(Текст); - -КонецФункции // НайтиСовпаденияВТексте() - // Функция - выделяет имя файла из полного адреса файла // // Параметры: @@ -564,7 +546,7 @@ ОписаниеФайла.Путь = ""; ОписаниеФайла.Имя = ""; - Совпадения = НайтиСовпаденияВТексте(АдресФайла, ШаблонПоискаПутиКФайлуВАдресе); + Совпадения = Служебный.НайтиСовпаденияВТексте(АдресФайла, ШаблонПоискаПутиКФайлуВАдресе); Если Совпадения.Количество() = 0 Тогда Возврат ОписаниеФайла; @@ -621,7 +603,7 @@ Продолжить; КонецЕсли; - Совпадения = НайтиСовпаденияВТексте(Значение, ТекФильтр); + Совпадения = Служебный.НайтиСовпаденияВТексте(Значение, ТекФильтр); Если Совпадения.Количество() > 0 Тогда СоответствуетФильтру = Истина; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" index 220fac2..a9e1f2d 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" @@ -7,20 +7,22 @@ // Codebase: https://github.com/ArKuznetsov/yard/ // ---------------------------------------------------------- -Перем МенеджерОбработкиДанных; // ВнешняяОбработкаОбъект - обработка-менеджер, вызвавшая данный обработчик -Перем Идентификатор; // Строка - идентификатор обработчика, - // заданный обработкой-менеджером -Перем ПараметрыОбработки; // Структура - параметры обработки -Перем Лог; // Объект - объект записи лога приложения - -Перем ПутьККаталогуДистрибутивов; // Строка - путь к каталогу содержащему дистрибутивы конфигурации - // для распаковки -Перем КаталогДляРаспаковкиШаблонов; // Строка - каталог для распаковки шаблонов конфигурации -Перем ФайлыДляРаспаковкиEFD; // Массив(Строка) - список файлов для распаковки из архива EFD дистрибутива - // конфигурации, если не указан, - // то распаковываются все файлы - -Перем НакопленныеДанные; // Массив(Структура) - результаты обработки данных +Перем МенеджерОбработкиДанных; // ВнешняяОбработкаОбъект - обработка-менеджер, вызвавшая данный обработчик +Перем Идентификатор; // Строка - идентификатор обработчика, + // заданный обработкой-менеджером +Перем ПараметрыОбработки; // Структура - параметры обработки +Перем Лог; // Объект - объект записи лога приложения + +Перем ПутьККаталогуДистрибутивов; // Строка - путь к каталогу содержащему дистрибутивы конфигурации + // для распаковки +Перем КаталогДляРаспаковкиШаблонов; // Строка - каталог для распаковки шаблонов конфигурации +Перем КаталогВАрхивеДляРаспаковкиEFD; // Строка - регулярное выражение, отбора каталогов + // в архиве EFD для распаковки +Перем ФайлыДляРаспаковкиEFD; // Массив(Строка) - список файлов для распаковки из архива EFD дистрибутива + // конфигурации, если не указан, + // то распаковываются все файлы + +Перем НакопленныеДанные; // Массив(Структура) - результаты обработки данных #Область ПрограммныйИнтерфейс @@ -76,6 +78,14 @@ "", "каталог для распаковки шаблонов конфигурации"); + ДобавитьОписаниеПараметра(Параметры, + "КаталогВАрхивеДляРаспаковкиEFD", + "Строка", + Ложь, + "", + "регулярное выражение, отбора каталогов + |в архиве EFD для распаковки"); + ДобавитьОписаниеПараметра(Параметры, "ФайлыДляРаспаковкиEFD", "Массив", @@ -152,9 +162,10 @@ ПараметрыОбработки = НовыеПараметры; - УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьККаталогуДистрибутивов" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиШаблонов", ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ФайлыДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьККаталогуДистрибутивов" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиШаблонов" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогВАрхивеДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ФайлыДляРаспаковкиEFD" , ПараметрыОбработки); КонецПроцедуры // УстановитьПараметрыОбработкиДанных() @@ -276,12 +287,13 @@ РаспаковщикРелиза = Новый РаспаковщикРелизов1С(); РаспаковщикРелиза.УстановитьПараметрыОбработкиДанных(ПараметрыОбработки); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Имя" , ТекОписание.Имя); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Ид" , ТекОписание.Идентификатор); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Версия" , ТекОписание.Версия); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ПутьКДистрибутиву" , ТекОписание.КаталогВерсии); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD", КаталогДляРаспаковкиEFD); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ФайлыДляРаспаковкиEFD" , ФайлыДляРаспаковкиEFD); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Имя" , ТекОписание.Имя); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Ид" , ТекОписание.Идентификатор); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Версия" , ТекОписание.Версия); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ПутьКДистрибутиву" , ТекОписание.КаталогВерсии); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , КаталогДляРаспаковкиEFD); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогВАрхивеДляРаспаковкиEFD" , КаталогВАрхивеДляРаспаковкиEFD); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ФайлыДляРаспаковкиEFD" , ФайлыДляРаспаковкиEFD); РаспаковщикРелиза.ОбработатьДанные(); ПродолжениеОбработкиДанныхВызовМенеджера(ТекОписание); @@ -337,7 +349,12 @@ Команда.Опция("ep extract-path", "", "каталог для распаковки шаблонов конфигурации") .ТСтрока() - .ВОкружении("YARD_TEMPLATES_PATH"); + .ВОкружении("YARD_EXTRACT_PATH"); + + Команда.Опция("ed extract-dir", "", "список файлов для распаковки из архива дистрибутива, разделенный ""|"", + |если не указан, то распаковываются все файлы") + .ТСтрока() + .ВОкружении("YARD_EXTRACT_DIR"); Команда.Опция("ef extract-files", "", "список файлов для распаковки из архива дистрибутива, разделенный ""|"", |если не указан, то распаковываются все файлы") @@ -357,8 +374,9 @@ ПараметрыПриложения.УстановитьРежимОтладки(ВыводОтладочнойИнформации); - УстановитьПараметрОбработкиДанных("ПутьККаталогуДистрибутивов" , Команда.ЗначениеОпции("path")); - УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиШаблонов", Команда.ЗначениеОпции("extract-path")); + УстановитьПараметрОбработкиДанных("ПутьККаталогуДистрибутивов" , Команда.ЗначениеОпции("path")); + УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиШаблонов" , Команда.ЗначениеОпции("extract-path")); + УстановитьПараметрОбработкиДанных("КаталогВАрхивеДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-dir")); ВремФайлы = СтрРазделить(Команда.ЗначениеОпции("extract-files"), "|", Ложь); УстановитьПараметрОбработкиДанных("ФайлыДляРаспаковкиEFD" , ВремФайлы); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" index dee8539..266b4c1 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\240\320\265\320\273\320\270\320\267\320\276\320\2621\320\241.os" @@ -7,19 +7,23 @@ // Codebase: https://github.com/ArKuznetsov/yard/ // ---------------------------------------------------------- -Перем МенеджерОбработкиДанных; // ВнешняяОбработкаОбъект - обработка-менеджер, вызвавшая данный обработчик -Перем Идентификатор; // Строка - идентификатор обработчика, заданный обработкой-менеджером -Перем ПараметрыОбработки; // Структура - параметры обработки -Перем Лог; // Объект - объект записи лога приложения - -Перем Приложение_Имя; // Строка - имя приложения -Перем Приложение_Ид; // Строка - идентификатор приложения -Перем Приложение_Версия; // Строка - версия приложения - -Перем ПутьКДистрибутиву; // Строка - путь к дистрибутиву конфигурации 1С -Перем КаталогДляРаспаковкиEFD; // Строка - каталог для распаковки шаблона конфигурации -Перем ФайлыДляРаспаковкиEFD; // Массив(Строка) - список файлов для распаковки из архива EFD дистрибутива - // конфигурации, если не указан, то распаковываются все файлы +Перем МенеджерОбработкиДанных; // ВнешняяОбработкаОбъект - обработка-менеджер, вызвавшая данный обработчик +Перем Идентификатор; // Строка - идентификатор обработчика, + // заданный обработкой-менеджером +Перем ПараметрыОбработки; // Структура - параметры обработки +Перем Лог; // Объект - объект записи лога приложения + +Перем Приложение_Имя; // Строка - имя приложения +Перем Приложение_Ид; // Строка - идентификатор приложения +Перем Приложение_Версия; // Строка - версия приложения + +Перем ПутьКДистрибутиву; // Строка - путь к дистрибутиву конфигурации 1С +Перем КаталогДляРаспаковкиEFD; // Строка - каталог для распаковки шаблона конфигурации +Перем КаталогВАрхивеДляРаспаковкиEFD; // Строка - регулярное выражение, отбора каталогов + // в архиве EFD для распаковки +Перем ФайлыДляРаспаковкиEFD; // Массив(Строка) - список файлов для распаковки из архива + // EFD дистрибутива конфигурации, если не указан, + // то распаковываются все файлы Перем НакопленныеДанные; // Массив(Структура) - результаты обработки данных @@ -96,6 +100,14 @@ Истина, "", "каталог для распаковки шаблона конфигурации"); + + ДобавитьОписаниеПараметра(Параметры, + "КаталогВАрхивеДляРаспаковкиEFD", + "Строка", + Ложь, + "", + "регулярное выражение, отбора каталогов + |в архиве EFD для распаковки"); ДобавитьОписаниеПараметра(Параметры, "ФайлыДляРаспаковкиEFD", @@ -173,12 +185,14 @@ ПараметрыОбработки = НовыеПараметры; - УстановитьПараметрОбработкиДанныхИзСтруктуры("Приложение_Имя" , ПараметрыОбработки, "НеизвестнаяКонфигурация"); - УстановитьПараметрОбработкиДанныхИзСтруктуры("Приложение_Ид" , ПараметрыОбработки, "unknown"); - УстановитьПараметрОбработкиДанныхИзСтруктуры("Приложение_Версия" , ПараметрыОбработки, "0.0.0.0"); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьКДистрибутиву" , ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиEFD", ПараметрыОбработки); - УстановитьПараметрОбработкиДанныхИзСтруктуры("ФайлыДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("Приложение_Имя" , ПараметрыОбработки, "НеизвестнаяКонфигурация"); + УстановитьПараметрОбработкиДанныхИзСтруктуры("Приложение_Ид" , ПараметрыОбработки, "unknown"); + УстановитьПараметрОбработкиДанныхИзСтруктуры("Приложение_Версия" , ПараметрыОбработки, "0.0.0.0"); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ПутьКДистрибутиву" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("РаспаковкаКаталогов" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогВАрхивеДляРаспаковкиEFD" , ПараметрыОбработки); + УстановитьПараметрОбработкиДанныхИзСтруктуры("ФайлыДляРаспаковкиEFD" , ПараметрыОбработки); КонецПроцедуры // УстановитьПараметрыОбработкиДанных() @@ -221,7 +235,7 @@ Если НЕ ЕстьПеременнаяМодуля(ИмяПараметра) Тогда Возврат; КонецЕсли; - + Если ВРег(ИмяПараметра) = "ФАЙЛЫДЛЯРАСПАКОВКИEFD" Тогда Если ТипЗнч(Значение) = Тип("Массив") Тогда ФайлыДляРаспаковкиEFD = Значение; @@ -274,6 +288,7 @@ Распаковщик.РаспаковатьШаблонКонфигурации1С(ФайлАрхиваEFD.ПолноеИмя, КаталогДляРаспаковки, + КаталогВАрхивеДляРаспаковкиEFD, ФайлыДляРаспаковкиEFD, Перечисления.ВариантыРаспаковкиКаталогов.БезОбщихКаталогов); @@ -335,10 +350,15 @@ .ТСтрока() .ВОкружении("YARD_DISTRIB_PATH"); - Команда.Опция("ep extract-path", "", "каталог для распаковки загруженного архива") + Команда.Опция("ep extract-path", "", "каталог для распаковки шаблонов конфигураци") .ТСтрока() .ВОкружении("YARD_EXTRACT_PATH"); + Команда.Опция("ed extract-dir", "", "список файлов для распаковки из архива дистрибутива, разделенный ""|"", + |если не указан, то распаковываются все файлы") + .ТСтрока() + .ВОкружении("YARD_EXTRACT_DIR"); + Команда.Опция("ef extract-files", "", "список файлов для распаковки из архива дистрибутива, разделенный ""|"", |если не указан, то распаковываются все файлы") .ТСтрока() @@ -369,13 +389,14 @@ ПараметрыПриложения.УстановитьРежимОтладки(ВыводОтладочнойИнформации); - УстановитьПараметрОбработкиДанных("Приложение_Имя" , Команда.ЗначениеОпции("app-name")); - УстановитьПараметрОбработкиДанных("Приложение_Ид" , Команда.ЗначениеОпции("app-id")); - УстановитьПараметрОбработкиДанных("Приложение_Версия" , Команда.ЗначениеОпции("app-version")); - - УстановитьПараметрОбработкиДанных("ПутьКДистрибутиву" , Команда.ЗначениеОпции("path")); - УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-path")); + УстановитьПараметрОбработкиДанных("Приложение_Имя" , Команда.ЗначениеОпции("app-name")); + УстановитьПараметрОбработкиДанных("Приложение_Ид" , Команда.ЗначениеОпции("app-id")); + УстановитьПараметрОбработкиДанных("Приложение_Версия" , Команда.ЗначениеОпции("app-version")); + УстановитьПараметрОбработкиДанных("ПутьКДистрибутиву" , Команда.ЗначениеОпции("path")); + УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-path")); + УстановитьПараметрОбработкиДанных("КаталогВАрхивеДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-dir")); + ВремФайлы = СтрРазделить(Команда.ЗначениеОпции("extract-files"), "|", Ложь); УстановитьПараметрОбработкиДанных("ФайлыДляРаспаковкиEFD" , ВремФайлы); @@ -503,6 +524,7 @@ Распаковщик.РаспаковатьШаблонКонфигурации1С(ФайлАрхиваEFD.ПолноеИмя, КаталогДляРаспаковки, + КаталогВАрхивеДляРаспаковкиEFD, "1cv8.mft", Перечисления.ВариантыРаспаковкиКаталогов.БезКаталогов); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2711\320\241\320\222\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\265.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2711\320\241\320\222\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\265.os" index b8f26ac..8488181 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2711\320\241\320\222\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\265.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\320\2711\320\241\320\222\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\265.os" @@ -256,7 +256,7 @@ Формат(ТекОписание.Дата, "ДФ=dd.MM.yyyy; ДП=-"), ТекОписание.Имя); - НайденаКонфигурацияДляОбновления = Ложь; + КонфигурацияДляОбновления = Неопределено; Для Каждого ТекВерсия Из ТекОписание.ВерсииДляОбновления Цикл @@ -265,21 +265,21 @@ ФайлКонфигурации = Новый Файл(ОбъединитьПути(КаталогОбновляемойВерсии, "1cv8.cf")); Если ФайлКонфигурации.Существует() Тогда - НайденаКонфигурацияДляОбновления = Истина; + КонфигурацияДляОбновления = ТекВерсия; Лог.Отладка("[%1]: Найдена версия %2 конфигурации %3 для обновления на версию %4 (%5).", СокрЛП(ЭтотОбъект), - ТекВерсия, + КонфигурацияДляОбновления, ТекОписание.Имя, ТекОписание.Версия, Формат(ТекОписание.Дата, "ДФ=dd.MM.yyyy; ДП=-")); Прервать; КонецЕсли; КонецЦикла; - Если НайденаКонфигурацияДляОбновления Тогда + Если НЕ КонфигурацияДляОбновления = Неопределено Тогда Лог.Информация("[%1]: Начало обновления %2 конфигурации %3 на версию %4 (%5).", СокрЛП(ЭтотОбъект), - ТекВерсия, + КонфигурацияДляОбновления, ТекОписание.Имя, ТекОписание.Версия, Формат(ТекОписание.Дата, "ДФ=dd.MM.yyyy; ДП=-")); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index d32e2e5..204e3a3 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -126,7 +126,6 @@ Если ЛогПриложения = Неопределено Тогда ЛогПриложения = Логирование.ПолучитьЛог(ИмяЛогаПриложения()); - КонецЕсли; Возврат ЛогПриложения; @@ -162,7 +161,7 @@ // Функция Версия() Экспорт - Возврат "1.5.1"; + Возврат "1.6.0"; КонецФункции // Версия() diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" index 01e8d91..4e4f940 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\265\321\200\320\265\321\207\320\270\321\201\320\273\320\265\320\275\320\270\321\217.os" @@ -9,7 +9,7 @@ #Использовать "../Макеты" -Перем ВариантыРаспаковкиКаталогов Экспорт; +Перем ВариантыРаспаковкиКаталогов Экспорт; // Структура - перечисление вариантов распаковки каталога // Функция - возвращает значение перечисления по полному текстовому представлению // вида: <имя перечисления>.<значение перечисления> diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272.os" index 1c785e2..5662cf2 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272.os" @@ -12,21 +12,24 @@ // // ---------------------------------------------------------- -Перем Лог; +Перем Лог; // Объект - объект записи лога приложения #Область ПрограммныйИнтерфейс // Процедура - извлекает указанные файлы из архива в формате EFD (1С) // // Параметры: -// ПутьКАрхивуEFD - Строка - путь к архиву в формате EFD -// КаталогРаспаковки - Строка - путь к каталогу для сохранения результата распаковки -// ВыбранныеФайлы - Строка - имя файла или список файлов для распаковки -// Массив(Строка) если не указан, то распаковываются все файлы -// РаспаковкаКаталогов - Строка - вариант распаковки каталогов +// ПутьКАрхивуEFD - Строка - путь к архиву в формате EFD +// КаталогРаспаковки - Строка - путь к каталогу для сохранения результата распаковки +// КаталогВАрхивеДляРаспаковкиEFD - Строка - регулярное выражение, отбора каталогов +// в архиве EFD для распаковки +// ВыбранныеФайлы - Строка - имя файла или список файлов для распаковки +// Массив(Строка) если не указан, то распаковываются все файлы +// РаспаковкаКаталогов - Строка - вариант распаковки каталогов // Процедура РаспаковатьШаблонКонфигурации1С(Знач ПутьКАрхивуEFD, Знач КаталогРаспаковки, + Знач КаталогВАрхивеДляРаспаковкиEFD, Знач ВыбранныеФайлы = "", Знач РаспаковкаКаталогов = "") Экспорт @@ -34,7 +37,11 @@ ПутьКФайлуDeflate = ИзвлечьАрхивDeflate(ПутьКАрхивуEFD); - ЗаписатьВыбранныеФайлы(ПутьКФайлуDeflate, КаталогРаспаковки, ВыбранныеФайлы, РаспаковкаКаталогов); + ЗаписатьВыбранныеФайлы(ПутьКФайлуDeflate, + КаталогРаспаковки, + КаталогВАрхивеДляРаспаковкиEFD, + ВыбранныеФайлы, + РаспаковкаКаталогов); УдалитьФайлы(ПутьКФайлуDeflate); @@ -305,11 +312,8 @@ Р2 = 2; // смещение 2 байта Р4 = 4; // смещение 4 байта - РазмерLocalFileHeader = Р4 + Р2 + Р2 + Р2 + Р2 + Р2 + Р4 + Р4 + Р4 + Р2 + Р2 - + РазмерИмениИсходногоФайла + Р0; + Возврат Р4 + Р2 + Р2 + Р2 + Р2 + Р2 + Р4 + Р4 + Р4 + Р2 + Р2 + РазмерИмениИсходногоФайла + Р0; - Возврат РазмерLocalFileHeader; - КонецФункции // ПолучитьРазмерЗаголовкаZIPФайла() // Функция - вычисляет размер окончания ZIP-файла в байтах @@ -339,7 +343,7 @@ // Функция - читает структуру файлов в архиве Deflate // // Параметры: -// ПутьКФайлуDeflate - Строка - путь к файлу Deflate для обработки +// ПутьКФайлуDeflate - Строка - путь к файлу Deflate для обработки // // Возвращаемое значение: // Массив(Структура) - список файлов в архиве @@ -426,14 +430,17 @@ // и сохраняет их в указанный каталог // // Параметры: -// ПутьКФайлуDeflate - Строка - путь к файлу Deflate для обработки -// КаталогРаспаковки - Строка - путь к каталогу для сохранения извлеченных файлов -// ВыбранныеФайлы - Строка - имя файла или список файлов для распаковки -// Массив(Строка) если не указан, то распаковываются все файлы -// РаспаковкаКаталогов - Строка - вариант распаковки каталогов +// ПутьКФайлуDeflate - Строка - путь к файлу Deflate для обработки +// КаталогРаспаковки - Строка - путь к каталогу для сохранения извлеченных файлов +// КаталогВАрхивеДляРаспаковкиEFD - Строка - регулярное выражение, отбора каталогов +// в архиве EFD для распаковки +// ВыбранныеФайлы - Строка - имя файла или список файлов для распаковки +// Массив(Строка) если не указан, то распаковываются все файлы +// РаспаковкаКаталогов - Строка - вариант распаковки каталогов // Процедура ЗаписатьВыбранныеФайлы(ПутьКФайлуDeflate, Знач КаталогРаспаковки, + Знач КаталогВАрхивеДляРаспаковкиEFD, Знач ВыбранныеФайлы = "", Знач РаспаковкаКаталогов = "") @@ -458,30 +465,46 @@ Для й = 0 По МассивФайлов.ВГраница() Цикл МассивФайлов[й] = ВРег(МассивФайлов[й]); КонецЦикла; + КаталогВАрхивеДляРаспаковкиEFD = ВРег(КаталогВАрхивеДляРаспаковкиEFD); КонецЕсли; Если НЕ ЗначениеЗаполнено(РаспаковкаКаталогов) Тогда РаспаковкаКаталогов = ВариантРаспаковкиКаталогаПоУмолчанию(ФайлыВАрхиве); КонецЕсли; - ОбщийПуть = ""; - Если РаспаковкаКаталогов = Перечисления.ВариантыРаспаковкиКаталогов.БезОбщихКаталогов Тогда - ОбщийПуть = Служебный.ОбщийПутьФайлов(ФайлыВАрхиве); - КонецЕсли; + ФайлыКРаспаковке = Новый Массив(); - Поток = ПутьКФайлуDeflate; - Для Каждого ТекСтрока Из ФайлыВАрхиве Цикл + ВремИмя = ?(ЭтоWindows, ВРег(ТекСтрока.Имя), ТекСтрока.Имя); + ВремПолноеИмя = ?(ЭтоWindows, ВРег(ТекСтрока.ПолноеИмя), ТекСтрока.ПолноеИмя); + + Если ЗначениеЗаполнено(КаталогВАрхивеДляРаспаковкиEFD) Тогда + Если Служебный.НайтиСовпаденияВТексте(ВремПолноеИмя, КаталогВАрхивеДляРаспаковкиEFD).Количество() = 0 Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + Если МассивФайлов.Количество() > 0 Тогда - ВремИмя = ?(ЭтоWindows, ВРег(ТекСтрока.Имя), ТекСтрока.Имя); - ВремПолноеИмя = ?(ЭтоWindows, ВРег(ТекСтрока.ПолноеИмя), ТекСтрока.ПолноеИмя); Если МассивФайлов.Найти(ВремИмя) = Неопределено И МассивФайлов.Найти(ВремПолноеИмя) = Неопределено Тогда Продолжить; КонецЕсли; КонецЕсли; + ФайлыКРаспаковке.Добавить(ТекСтрока); + + КонецЦикла; + + ОбщийПуть = ""; + Если РаспаковкаКаталогов = Перечисления.ВариантыРаспаковкиКаталогов.БезОбщихКаталогов Тогда + ОбщийПуть = Служебный.ОбщийПутьФайлов(ФайлыКРаспаковке); + КонецЕсли; + + Поток = ПутьКФайлуDeflate; + + Для Каждого ТекСтрока Из ФайлыКРаспаковке Цикл + КаталогРаспаковкиФайла = КаталогРаспаковкиФайла(ТекСтрока, КаталогРаспаковки, ОбщийПуть, РаспаковкаКаталогов); ЗаписатьФайл(Поток, ТекСтрока, КаталогРаспаковкиФайла); diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" index a59a708..686c798 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" @@ -201,9 +201,13 @@ // Функция ДатаPOSIX(Знач Дата) Экспорт - Возврат "" + Год(Дата) + "-" + ФорматДвузначноеЧисло(Месяц(Дата)) + "-" + ФорматДвузначноеЧисло(День(Дата)) + " " - + ФорматДвузначноеЧисло(Час(Дата)) + ":" + ФорматДвузначноеЧисло(Минута(Дата)) - + ":" + ФорматДвузначноеЧисло(Секунда(Дата)); + Возврат СтрШаблон("%1-%2-%3 %4:%5:%6", + Год(Дата), + ФорматДвузначноеЧисло(Месяц(Дата)), + ФорматДвузначноеЧисло(День(Дата)), + ФорматДвузначноеЧисло(Час(Дата)), + ФорматДвузначноеЧисло(Минута(Дата)), + ФорматДвузначноеЧисло(Секунда(Дата))); КонецФункции // ДатаPOSIX() @@ -229,8 +233,7 @@ Шаблон = ">\s*?<"; - РВ = Новый РегулярноеВыражение(Шаблон); - Совпадения = РВ.НайтиСовпадения(Текст); + Совпадения = НайтиСовпаденияВТексте(Текст, Шаблон); Для Каждого ТекСовпадение Из Совпадения Цикл Текст = СтрЗаменить(Текст, ТекСовпадение.Значение, "><"); @@ -238,8 +241,7 @@ Шаблон = "[^>\s]\s{2,}?<"; - РВ = Новый РегулярноеВыражение(Шаблон); - Совпадения = РВ.НайтиСовпадения(Текст); + Совпадения = НайтиСовпаденияВТексте(Текст, Шаблон); Для Каждого ТекСовпадение Из Совпадения Цикл Текст = СтрЗаменить(Текст, ТекСовпадение.Значение, Лев(ТекСовпадение.Значение, 1) +"<"); @@ -247,8 +249,7 @@ Шаблон = ">\s{2,}?[^<\s]"; - РВ = Новый РегулярноеВыражение(Шаблон); - Совпадения = РВ.НайтиСовпадения(Текст); + Совпадения = НайтиСовпаденияВТексте(Текст, Шаблон); Для Каждого ТекСовпадение Из Совпадения Цикл Текст = СтрЗаменить(Текст, ТекСовпадение.Значение, ">" + Прав(ТекСовпадение.Значение, 1)); @@ -256,6 +257,22 @@ КонецПроцедуры // ОчиститьТекстСтраницыHTML() +// Функция - ищет совпадения в тексте по указанному регулярному выражению +// +// Параметры: +// Текст - Строка - текст, вкотором выполняется поиск +// Шаблон - Строка - регулярное выражение +// +// Возвращаемое значение: +// КоллекцияСовпаденийРегулярногоВыражения - найденные совпадения +// +Функция НайтиСовпаденияВТексте(Текст, Шаблон) Экспорт + + РВ = Новый РегулярноеВыражение(Шаблон); + Возврат РВ.НайтиСовпадения(Текст); + +КонецФункции // НайтиСовпаденияВТексте() + // Процедура - убирает в строке начальные и конечные кавычки // // Параметры: @@ -289,7 +306,7 @@ Возврат; КонецЕсли; - ФайлыВКаталоге = НайтиФайлы(ПутьККаталогу, "*.*"); + ФайлыВКаталоге = НайтиФайлы(ПутьККаталогу, ПолучитьМаскуВсеФайлы()); Если ФайлыВКаталоге.Количество() > 0 Тогда Возврат; КонецЕсли; @@ -315,7 +332,7 @@ КонецЕсли; ОбщийПуть = Лев(МассивФайлов[0].ПолноеИмя, СтрДлина(МассивФайлов[0].ПолноеИмя) - СтрДлина(МассивФайлов[0].Имя)); - Для й = 1 По МассивФайлов.ВГраница() Цикл + Для й = 0 По МассивФайлов.ВГраница() Цикл Если МассивФайлов[й].Имя = МассивФайлов[й].ПолноеИмя Тогда Прервать; КонецЕсли; @@ -327,6 +344,15 @@ КонецЦикла; КонецЦикла; + Если НЕ (Прав(ОбщийПуть, 1) = "\" ИЛИ Прав(ОбщийПуть, 1) = "/") Тогда + Поз = Макс(СтрНайти(ОбщийПуть, "\", НаправлениеПоиска.СКонца), СтрНайти(ОбщийПуть, "/", НаправлениеПоиска.СКонца)); + ОбщийПуть = Сред(ОбщийПуть, Поз); + КонецЕсли; + + Если СтрДлина(ОбщийПуть) = 1 Тогда + ОбщийПуть = ""; + КонецЕсли; + Возврат ОбщийПуть; КонецФункции // ОбщийПутьФайлов() diff --git a/tests/yard-test.os b/tests/yard-test.os index d2a7172..55b3f19 100644 --- a/tests/yard-test.os +++ b/tests/yard-test.os @@ -15,7 +15,7 @@ Перем ЮнитТест; Перем ВременныйКаталог; -Перем Лог; +Перем Лог; // Объект - объект записи лога приложения // Процедура выполняется после запуска теста //