Skip to content

Commit

Permalink
Скачивание "нового в версии" (#56)
Browse files Browse the repository at this point in the history
* Имплементация по скачиванию "мусора"
* Исправил ридми
  • Loading branch information
Segate-ekb authored Sep 13, 2024
1 parent 82aad63 commit b700599
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 2 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 для распаковки
Expand Down
30 changes: 30 additions & 0 deletions src/Классы/ЗагрузчикРелизов1С.os
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
// (проверяются файлы description.json)
Перем ОграничениеКоличества; // Число - ограничение количества загружаемых за 1 раз версий
Перем ТолькоСкачать; // Булево - только скачать дистрибутив с сайта
Перем СкачиватьНовоеВВерсии; // Булево - скачивать "Новое в версии" с сайта

Перем РаспаковыватьEFD; // Булево - Истина - если загруженный архив содержит упакованный
// шаблон конфигурации (содержит файл 1cv8.efd),
Expand Down Expand Up @@ -215,6 +216,13 @@
Ложь,
Ложь,
"Истина - только скачать дистрибутив с сайта");

ДобавитьОписаниеПараметра(Параметры,
"СкачиватьНовоеВВерсии",
"Булево",
Ложь,
Ложь,
"Истина - Скачать ""Новое в версии"" с сайта");

ДобавитьОписаниеПараметра(Параметры,
"РаспаковыватьEFD",
Expand Down Expand Up @@ -355,6 +363,7 @@
УстановитьПараметрОбработкиДанныхИзСтруктуры("ЗагружатьСуществующие" , ПараметрыОбработки, Ложь);
УстановитьПараметрОбработкиДанныхИзСтруктуры("ОграничениеКоличества" , ПараметрыОбработки, 0);
УстановитьПараметрОбработкиДанныхИзСтруктуры("ТолькоСкачать" , ПараметрыОбработки, Ложь);
УстановитьПараметрОбработкиДанныхИзСтруктуры("СкачиватьНовоеВВерсии" , ПараметрыОбработки, Ложь);
УстановитьПараметрОбработкиДанныхИзСтруктуры("РаспаковыватьEFD" , ПараметрыОбработки, Ложь);
УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогДляРаспаковкиEFD" , ПараметрыОбработки);
УстановитьПараметрОбработкиДанныхИзСтруктуры("КаталогВАрхивеДляРаспаковкиEFD" , ПараметрыОбработки);
Expand Down Expand Up @@ -654,6 +663,9 @@

Команда.Опция("do download-only", Ложь, "только скачать дистрибутив с сайта")
.Флаг();

Команда.Опция("dc download-changelog", Ложь, "скачивать ""Новое в версии""")
.Флаг();

Команда.Опция("e extract", Ложь, "флаг распаковки загруженного архива")
.Флаг();
Expand Down Expand Up @@ -723,6 +735,7 @@
УстановитьПараметрОбработкиДанных("ЗагружатьСуществующие" , Команда.ЗначениеОпции("download-existing"));
УстановитьПараметрОбработкиДанных("ОграничениеКоличества" , Команда.ЗначениеОпции("download-limit"));
УстановитьПараметрОбработкиДанных("ТолькоСкачать" , Команда.ЗначениеОпции("download-only"));
УстановитьПараметрОбработкиДанных("СкачиватьНовоеВВерсии" , Команда.ЗначениеОпции("download-changelog"));
УстановитьПараметрОбработкиДанных("РаспаковыватьEFD" , Команда.ЗначениеОпции("extract"));
УстановитьПараметрОбработкиДанных("КаталогДляРаспаковкиEFD" , Команда.ЗначениеОпции("extract-path"));
УстановитьПараметрОбработкиДанных("УдалитьПослеРаспаковкиEFD" , Команда.ЗначениеОпции("delete"));
Expand Down Expand Up @@ -899,6 +912,23 @@
Возврат Ложь;
КонецЕсли;

Если СкачиватьНовоеВВерсии Тогда
Лог.Отладка("Начинаю получение информации о новом в версии.");
НовоеВВерсииСтрока = Обозреватель.ПолучитьНовоеВверсии(ОписаниеВерсии.Путь);
Если ЗначениеЗаполнено(НовоеВВерсииСтрока) Тогда
ИмяФайлаНовоеВВерсии = ОбъединитьПути(КаталогДляСохранения,
ОписаниеВерсии.Идентификатор,
ОписаниеВерсии.Версия,
"changelog.htm");

Распаковщик.ОбеспечитьКаталог(ИмяФайлаНовоеВВерсии, Истина);

НовоеВВерсии = Новый ТекстовыйДокумент;
НовоеВВерсии.УстановитьТекст(НовоеВВерсииСтрока);
НовоеВВерсии.Записать(ИмяФайлаНовоеВВерсии, "utf-8");
КонецЕсли;
КонецЕсли;

СписокСсылок = Обозреватель.ПолучитьСсылкиДляЗагрузки(ОписаниеВерсии.Путь, ШаблонСсылки);

Если СписокСсылок.Количество() = 0 Тогда
Expand Down
27 changes: 25 additions & 2 deletions src/Классы/ОбозревательСайта1С.os
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@

ШаблонПоискаАдресаСтраницыЗагрузки = ПараметрыПриложения.ШаблонПоискаАдресаСтраницыЗагрузки();
ШаблонПоискаСсылкиДляЗагрузки = ПараметрыПриложения.ШаблонПоискаСсылкиДляЗагрузки();

Совпадения = Служебный.НайтиСовпаденияВТексте(СтраницаВерсии, ШаблонПоискаАдресаСтраницыЗагрузки);

СписокСсылок = Новый Массив();
Expand Down Expand Up @@ -371,7 +371,7 @@
Продолжить;
КонецЕсли;

ТекВерсия = Новый Структура("Имя, Путь, ПутьДляЗагрузки, ИмяФайла");
ТекВерсия = Новый Структура("Имя, Путь, ПутьДляЗагрузки, ИмяФайла, СсылкаНаНовоеВВерсии");
ТекВерсия.Имя = ТекИмя;
ТекВерсия.Путь = ТекСсылка;
ТекВерсия.ПутьДляЗагрузки = СовпаденияДляЗагрузки[0].Группы[2].Значение;
Expand All @@ -387,6 +387,29 @@

КонецФункции // ПолучитьСсылкиДляЗагрузки()

// Процедура
Функция ПолучитьНовоеВверсии(Знач АдресРесурса = "") Экспорт

СтраницаВерсии = ПолучитьСтраницуСайта(ПараметрыПриложения.СервисРелизов(), АдресРесурса);

ШаблонПоискаНовогоВВерсии = ПараметрыПриложения.ШаблонПоискаСсылкиНаНовоеВВерсии();
Совпадения = Служебный.НайтиСовпаденияВТексте(СтраницаВерсии, ШаблонПоискаНовогоВВерсии);

СсылкаНаНовоеВВерсии = "";
Если Совпадения.Количество() = 0 Тогда
Лог.Отладка("По адресу ""%1"" не найдено совпадений с шаблоном ""%2"" поиска страницы с информацией о новом в версии.",
АдресРесурса,
ШаблонПоискаНовогоВВерсии);
Возврат "";
КонецЕсли;

Совпадение = Совпадения[0];

СсылкаНаНовоеВВерсии = Совпадение.Группы[1].Значение;

Возврат ПолучитьСтраницуСайта(ПараметрыПриложения.СервисРелизов(), СсылкаНаНовоеВВерсии);
КонецФункции

// Процедура - загружает указанный файл с сайта 1С
//
// Параметры:
Expand Down
1 change: 1 addition & 0 deletions src/Макеты/РесурсыПриложения.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"ШаблонПоискаДатБетаВерсий" : "(\\d\\d\\.\\d\\d\\.\\d\\d)+",
"ШаблонПоискаВерсий" : "<td class=\"versionColumn\">\\s*<a href=\"(.*)\">\\s*(.*)\\s*<\\/a>(\\s|.)*?<td class=\"dateColumn\">\\s*(.*)\\s*<\\/td>(\\s|.)*?(?:<td class=\"itsColumn\">\\s*(?:.*)\\s*<\\/td>(?:\\s|.)*?)?<td class=\"previousVersionsColumn\">\\s*(.*)\\s*<\\/td>",
"ШаблонПоискаАдресаСтраницыЗагрузки" : "<a href=\"(.*)\">\\s*(.*)\\s*<\\/a>(\\s|.)*?<\/div>",
"ШаблонПоискаСсылкиНаНовоеВВерсии":"<a href=\"(.*)\">\\s*(.*)\\s*Новое в версии<\/a>",
"ШаблонПоискаСсылкиДляЗагрузки" : "<div class=\"downloadDist\">(\\s|.)*?<a href=\"(.*)\">\\s*Скачать дистрибутив\\s*<\\/a>(\\s|.)*?<\\/div>",
"ШаблонПоискаПутиКФайлуВАдресе" : "\\?.*path=(.+)(?:\\z|&)"
}
11 changes: 11 additions & 0 deletions src/Модули/ПараметрыПриложения.os
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,17 @@

КонецФункции // ШаблонПоискаАдресаСтраницыЗагрузки()

// Функция - возвращает шаблон поиска адреса страницы с информацией о новом в версии
//
// Возвращаемое значение:
// Строка - шаблон поиска адреса страницы загрузки дистрибутива
//
Функция ШаблонПоискаСсылкиНаНовоеВВерсии() Экспорт

Возврат ЗначениеРесурса("ШаблонПоискаСсылкиНаНовоеВВерсии");

КонецФункции // ШаблонПоискаАдресаСтраницыЗагрузки()

// Функция - возвращает шаблон поиска ссылки для загрузки дистрибутива
//
// Возвращаемое значение:
Expand Down

0 comments on commit b700599

Please sign in to comment.