Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Скачивание "нового в версии" #56

Merged
merged 5 commits into from
Sep 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading