From b7005995dc00ccc0a05845c37186187552eb966e Mon Sep 17 00:00:00 2001 From: Ivanov Egor <80944823+Segate-ekb@users.noreply.github.com> Date: Fri, 13 Sep 2024 07:38:32 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=A1=D0=BA=D0=B0=D1=87=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20"=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=B2=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8"=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Имплементация по скачиванию "мусора" * Исправил ридми --- README.md | 1 + ...0\270\320\267\320\276\320\2621\320\241.os" | 30 +++++++++++++++++++ ...0\260\320\271\321\202\320\2601\320\241.os" | 27 +++++++++++++++-- ...\266\320\265\320\275\320\270\321\217.json" | 1 + ...20\266\320\265\320\275\320\270\321\217.os" | 11 +++++++ 5 files changed, 68 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 13b82a4..d618f33 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,7 @@ yard releases --user "user" --pwd "pwd" list --app-filter "Библиотека - _--download-existing_ - флаг принудительной загрузки ранее загруженных версий в каталоге для загрузки (проверяются файлы `description.json`) - _--download-limit_ - ограничение количества загружаемых версий за 1 запуск - _--download-only_ - только скачать дистрибутив с сайта и не выполнять дальнейшую обработку + - _--download-changelog_ - Скачать "Новое в веерсии" в файл changelog.htm - _--extract_ - флаг распаковки загруженного архива - _--extract-path_ - каталог для распаковки загруженного архива - _--extract-dir_ - регулярное выражение, отбора каталогов в архиве EFD для распаковки 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 83d68a9..54e1c5d 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" @@ -46,6 +46,7 @@ // (проверяются файлы description.json) Перем ОграничениеКоличества; // Число - ограничение количества загружаемых за 1 раз версий Перем ТолькоСкачать; // Булево - только скачать дистрибутив с сайта +Перем СкачиватьНовоеВВерсии; // Булево - скачивать "Новое в версии" с сайта Перем РаспаковыватьEFD; // Булево - Истина - если загруженный архив содержит упакованный // шаблон конфигурации (содержит файл 1cv8.efd), @@ -215,6 +216,13 @@ Ложь, Ложь, "Истина - только скачать дистрибутив с сайта"); + + ДобавитьОписаниеПараметра(Параметры, + "СкачиватьНовоеВВерсии", + "Булево", + Ложь, + Ложь, + "Истина - Скачать ""Новое в версии"" с сайта"); ДобавитьОписаниеПараметра(Параметры, "РаспаковыватьEFD", @@ -355,6 +363,7 @@ УстановитьПараметрОбработкиДанныхИзСтруктуры("ЗагружатьСуществующие" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("ОграничениеКоличества" , ПараметрыОбработки, 0); УстановитьПараметрОбработкиДанныхИзСтруктуры("ТолькоСкачать" , ПараметрыОбработки, Ложь); + УстановитьПараметрОбработкиДанныхИзСтруктуры("СкачиватьНовоеВВерсии" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("РаспаковыватьEFD" , ПараметрыОбработки, Ложь); УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиEFD" , ПараметрыОбработки); УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогВАрхивеДляРаспаковкиEFD" , ПараметрыОбработки); @@ -654,6 +663,9 @@ Команда.Опция("do download-only", Ложь, "только скачать дистрибутив с сайта") .Флаг(); + + Команда.Опция("dc download-changelog", Ложь, "скачивать ""Новое в версии""") + .Флаг(); Команда.Опция("e extract", Ложь, "флаг распаковки загруженного архива") .Флаг(); @@ -723,6 +735,7 @@ УстановитьПараметрОбработкиДанных("ЗагружатьСуществующие" , Команда.ЗначениеОпции("download-existing")); УстановитьПараметрОбработкиДанных("ОграничениеКоличества" , Команда.ЗначениеОпции("download-limit")); УстановитьПараметрОбработкиДанных("ТолькоСкачать" , Команда.ЗначениеОпции("download-only")); + УстановитьПараметрОбработкиДанных("СкачиватьНовоеВВерсии" , Команда.ЗначениеОпции("download-changelog")); УстановитьПараметрОбработкиДанных("РаспаковыватьEFD" , Команда.ЗначениеОпции("extract")); УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-path")); УстановитьПараметрОбработкиДанных("УдалитьПослеРаспаковкиEFD" , Команда.ЗначениеОпции("delete")); @@ -899,6 +912,23 @@ Возврат Ложь; КонецЕсли; + Если СкачиватьНовоеВВерсии Тогда + Лог.Отладка("Начинаю получение информации о новом в версии."); + НовоеВВерсииСтрока = Обозреватель.ПолучитьНовоеВверсии(ОписаниеВерсии.Путь); + Если ЗначениеЗаполнено(НовоеВВерсииСтрока) Тогда + ИмяФайлаНовоеВВерсии = ОбъединитьПути(КаталогДляСохранения, + ОписаниеВерсии.Идентификатор, + ОписаниеВерсии.Версия, + "changelog.htm"); + + Распаковщик.ОбеспечитьКаталог(ИмяФайлаНовоеВВерсии, Истина); + + НовоеВВерсии = Новый ТекстовыйДокумент; + НовоеВВерсии.УстановитьТекст(НовоеВВерсииСтрока); + НовоеВВерсии.Записать(ИмяФайлаНовоеВВерсии, "utf-8"); + КонецЕсли; + КонецЕсли; + СписокСсылок = Обозреватель.ПолучитьСсылкиДляЗагрузки(ОписаниеВерсии.Путь, ШаблонСсылки); Если СписокСсылок.Количество() = 0 Тогда 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 dd80e59..04aa69e 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" @@ -335,7 +335,7 @@ ШаблонПоискаАдресаСтраницыЗагрузки = ПараметрыПриложения.ШаблонПоискаАдресаСтраницыЗагрузки(); ШаблонПоискаСсылкиДляЗагрузки = ПараметрыПриложения.ШаблонПоискаСсылкиДляЗагрузки(); - + Совпадения = Служебный.НайтиСовпаденияВТексте(СтраницаВерсии, ШаблонПоискаАдресаСтраницыЗагрузки); СписокСсылок = Новый Массив(); @@ -371,7 +371,7 @@ Продолжить; КонецЕсли; - ТекВерсия = Новый Структура("Имя, Путь, ПутьДляЗагрузки, ИмяФайла"); + ТекВерсия = Новый Структура("Имя, Путь, ПутьДляЗагрузки, ИмяФайла, СсылкаНаНовоеВВерсии"); ТекВерсия.Имя = ТекИмя; ТекВерсия.Путь = ТекСсылка; ТекВерсия.ПутьДляЗагрузки = СовпаденияДляЗагрузки[0].Группы[2].Значение; @@ -387,6 +387,29 @@ КонецФункции // ПолучитьСсылкиДляЗагрузки() +// Процедура +Функция ПолучитьНовоеВверсии(Знач АдресРесурса = "") Экспорт + + СтраницаВерсии = ПолучитьСтраницуСайта(ПараметрыПриложения.СервисРелизов(), АдресРесурса); + + ШаблонПоискаНовогоВВерсии = ПараметрыПриложения.ШаблонПоискаСсылкиНаНовоеВВерсии(); + Совпадения = Служебный.НайтиСовпаденияВТексте(СтраницаВерсии, ШаблонПоискаНовогоВВерсии); + + СсылкаНаНовоеВВерсии = ""; + Если Совпадения.Количество() = 0 Тогда + Лог.Отладка("По адресу ""%1"" не найдено совпадений с шаблоном ""%2"" поиска страницы с информацией о новом в версии.", + АдресРесурса, + ШаблонПоискаНовогоВВерсии); + Возврат ""; + КонецЕсли; + + Совпадение = Совпадения[0]; + + СсылкаНаНовоеВВерсии = Совпадение.Группы[1].Значение; + + Возврат ПолучитьСтраницуСайта(ПараметрыПриложения.СервисРелизов(), СсылкаНаНовоеВВерсии); +КонецФункции + // Процедура - загружает указанный файл с сайта 1С // // Параметры: diff --git "a/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.json" "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.json" index 95be27b..8380ecf 100644 --- "a/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.json" +++ "b/src/\320\234\320\260\320\272\320\265\321\202\321\213/\320\240\320\265\321\201\321\203\321\200\321\201\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.json" @@ -13,6 +13,7 @@ "ШаблонПоискаДатБетаВерсий" : "(\\d\\d\\.\\d\\d\\.\\d\\d)+", "ШаблонПоискаВерсий" : "\\s*\\s*(.*)\\s*<\\/a>(\\s|.)*?\\s*(.*)\\s*<\\/td>(\\s|.)*?(?:\\s*(?:.*)\\s*<\\/td>(?:\\s|.)*?)?\\s*(.*)\\s*<\\/td>", "ШаблонПоискаАдресаСтраницыЗагрузки" : "\\s*(.*)\\s*<\\/a>(\\s|.)*?<\/div>", + "ШаблонПоискаСсылкиНаНовоеВВерсии":"\\s*(.*)\\s*Новое в версии<\/a>", "ШаблонПоискаСсылкиДляЗагрузки" : "
(\\s|.)*?\\s*Скачать дистрибутив\\s*<\\/a>(\\s|.)*?<\\/div>", "ШаблонПоискаПутиКФайлуВАдресе" : "\\?.*path=(.+)(?:\\z|&)" } 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 d327d02..82f7ee5 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" @@ -174,6 +174,17 @@ КонецФункции // ШаблонПоискаАдресаСтраницыЗагрузки() +// Функция - возвращает шаблон поиска адреса страницы с информацией о новом в версии +// +// Возвращаемое значение: +// Строка - шаблон поиска адреса страницы загрузки дистрибутива +// +Функция ШаблонПоискаСсылкиНаНовоеВВерсии() Экспорт + + Возврат ЗначениеРесурса("ШаблонПоискаСсылкиНаНовоеВВерсии"); + +КонецФункции // ШаблонПоискаАдресаСтраницыЗагрузки() + // Функция - возвращает шаблон поиска ссылки для загрузки дистрибутива // // Возвращаемое значение: From 70cfbb392a48ff99a89a768f7847bb7c570bef9b Mon Sep 17 00:00:00 2001 From: 666Bounty999 <107107364+666Bounty999@users.noreply.github.com> Date: Fri, 13 Sep 2024 18:26:22 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=A1=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20"=D0=BD=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=B2=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8"=20=D0=B2=20?= =?UTF-8?q?=D0=9A=D0=B0=D1=82=D0=B0=D0=BB=D0=BE=D0=B3=D0=94=D0=BB=D1=8F?= =?UTF-8?q?=D0=A0=D0=B0=D1=81=D0=BF=D0=B0=D0=BA=D0=BE=D0=B2=D0=BA=D0=B8EFD?= =?UTF-8?q?=20(#57)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update README.md * Update ЗагрузчикРелизов1С.os Cохранение news.htm ВКаталогДляРаспаковкиEFD --- README.md | 3 ++- ...0\270\320\267\320\276\320\2621\320\241.os" | 21 +++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d618f33..b0d2e2d 100644 --- a/README.md +++ b/README.md @@ -251,6 +251,7 @@ yard upload-all --path ".\tmp\tmplts\SSL31\" --cfname "1cv8.cf" --git-path ".\tm - **ФильтрВерсийНачинаяСДаты** - Фильтр по начальной дате версии (включая) - **ФильтрВерсийДоДаты** - Фильтр по последней дате версии (включая) - **ФильтрДистрибутива** - фильтр заголовков ссылок на скачивание дистрибутива если не указан, то будет выполнена проверка наличия ссылки "Полный дистрибутив", затем "Дистрибутив обновления" +- **СкачиватьНовоеВВерсии** - Истина - будут загружены "Новое в версии" с сайта в файл changelog.htm. По умолчанию: Ложь. - **ПолучатьБетаВерсии** - Истина - будут получены ознакомительные версии - **КаталогДляСохранения** - каталог для загрузки релизов 1С - **НачатьСПоследнейВерсии** - Истина - будут загружены релизы с версией старше последней найденной в каталоге для загрузки (проверяются файлы description.json) Ложь - будут загружены все релизы с учетом других настроек @@ -258,7 +259,7 @@ yard upload-all --path ".\tmp\tmplts\SSL31\" --cfname "1cv8.cf" --git-path ".\tm - **ЗагружатьСуществующие** - Истина - будут загружены все найденные релизы независимо от существующих в каталоге для загрузки Ложь - будут загружены только отсутствующие в каталоге для загрузки релизы (проверяются файлы description.json) - **ОграничениеКоличества** - ограничение количества загружаемых за 1 раз версий - **ТолькоСкачать** - Истина - только скачать дистрибутив с сайта и не выполнять дальнейшую обработку -- **РаспаковыватьEFD** - Истина - если загруженный архив содержит упакованный шаблонконфигурации (содержит файл 1cv8.efd), то он будет распакован +- **РаспаковыватьEFD** - Истина - если загруженный архив содержит упакованный шаблон конфигурации (содержит файл 1cv8.efd), то он будет распакован - **КаталогДляРаспаковкиEFD** - каталог для распаковки шаблона конфигурации - **КаталогВАрхивеДляРаспаковкиEFD** - регулярное выражение, отбора каталогов в архиве EFD для распаковки - **ФайлыДляРаспаковкиEFD** - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы 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 54e1c5d..ebb25f4 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" @@ -1014,12 +1014,29 @@ РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("Приложение_Версия" , ОписаниеВерсии.Версия); РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ПутьКДистрибутиву" , ФайлАрхива.Путь); РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , КаталогДляРаспаковкиEFD); - РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогВАрхивеДляРаспаковкиEFD", - КаталогВАрхивеДляРаспаковкиEFD); + РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("КаталогВАрхивеДляРаспаковкиEFD", КаталогВАрхивеДляРаспаковкиEFD); РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("ФайлыДляРаспаковкиEFD" , ФайлыДляРаспаковкиEFD); РаспаковщикРелиза.УстановитьПараметрОбработкиДанных("РаспаковыватьСуществующие" , РаспаковыватьСуществующие); РаспаковщикРелиза.ОбработатьДанные(); + Если СкачиватьНовоеВВерсии и ЗначениеЗаполнено(КаталогДляРаспаковкиEFD) Тогда + Лог.Отладка("Копирую changelog.htm в файл news.htm в соответствующую версию каталога КаталогДляРаспаковкиEFD."); + + ИмяФайлаНовоеВВерсииВКаталогДляСохранения = ОбъединитьПути(КаталогДляСохранения, + ОписаниеВерсии.Идентификатор, + ОписаниеВерсии.Версия, + "changelog.htm"); + + ИмяФайлаНовоеВВерсииВКаталогДляРаспаковкиEFD = ОбъединитьПути(КаталогДляРаспаковкиEFD, + ОписаниеВерсии.Идентификатор, + ОписаниеВерсии.Версия, + "news.htm"); + + Распаковщик.ОбеспечитьКаталог(ИмяФайлаНовоеВВерсииВКаталогДляРаспаковкиEFD, Истина); + + КопироватьФайл(ИмяФайлаНовоеВВерсииВКаталогДляСохранения, ИмяФайлаНовоеВВерсииВКаталогДляРаспаковкиEFD); + КонецЕсли; + Если УдалитьПослеРаспаковкиEFD Тогда УдалитьФайлы(ФайлАрхива.Путь, ПолучитьМаскуВсеФайлы()); УдалитьФайлы(ФайлАрхива.Путь); From cd3199171f83b41f813e2557ec8083222f45f14d Mon Sep 17 00:00:00 2001 From: Artem Kuznetsov Date: Sun, 15 Sep 2024 18:22:38 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=9D=D0=BE=D0=BC=D0=B5=D1=80=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index de557c7..9e49a0e 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("yard") - .Версия("1.11.0") + .Версия("1.11.1") .ВерсияСреды("1.6") .ЗависитОт("logos") .ЗависитОт("asserts")