You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-04-26 20:43:22 +02:00
Доработка генерации драфтов
This commit is contained in:
+639
-631
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,8 @@
|
||||
#Использовать "../../../../src/ru/OInt/tools/main"
|
||||
|
||||
Перем ДанныеПроекта;
|
||||
Перем Версия;
|
||||
Перем КаталогШаблонов;
|
||||
|
||||
Процедура ПриСозданииОбъекта(Знач ДанныеПроекта_ = Неопределено)
|
||||
|
||||
@@ -14,16 +16,34 @@
|
||||
|
||||
CommonTools.СообщитьПроцесс("Draft initialization");
|
||||
|
||||
СоздатьДрафтGithub();
|
||||
СоздатьДрафтSourcecraft();
|
||||
Версия = ДанныеПроекта.ПолучитьЗначениеНастройки("primary.version");
|
||||
КаталогШаблонов = ДанныеПроекта.ПолучитьЗначениеНастройки("paths.templatesSrc");
|
||||
|
||||
ПутьФайлаChangelog = "./service/releases.json";
|
||||
ДанныеChangelog = CommonTools.ПрочитатьФайлJSON(ПутьФайлаChangelog);
|
||||
ДанныеТекущего = Неопределено;
|
||||
|
||||
Для Каждого Релиз Из ДанныеChangelog Цикл
|
||||
Если Релиз["version"] = Версия Тогда
|
||||
ДанныеТекущего = Релиз;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ДанныеТекущего = Неопределено Тогда
|
||||
ВызватьИсключение "Changelog for current version not found!";
|
||||
КонецЕсли;
|
||||
|
||||
СоздатьДрафтGithub(ДанныеТекущего);
|
||||
СоздатьДрафтSourcecraft(ДанныеТекущего);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СоздатьДрафтGithub()
|
||||
Процедура СоздатьДрафтGithub(Знач Данные)
|
||||
|
||||
ПолеТокена = ДанныеПроекта.ПолучитьЗначениеНастройки("github.tokenField");
|
||||
Токен = ДанныеПроекта.ПолучитьЗначениеСекретныхДанных(ПолеТокена);
|
||||
Версия = ДанныеПроекта.ПолучитьЗначениеНастройки("primary.version");
|
||||
ПолеТокена = ДанныеПроекта.ПолучитьЗначениеНастройки("github.tokenField");
|
||||
URLКонтента = ДанныеПроекта.ПолучитьЗначениеНастройки("github.contentPath");
|
||||
Токен = ДанныеПроекта.ПолучитьЗначениеСекретныхДанных(ПолеТокена);
|
||||
|
||||
СписокРелизов = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
@@ -32,13 +52,14 @@
|
||||
.ОбработатьЗапрос("GET")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
IDРелиза = Неопределено;
|
||||
|
||||
Попытка
|
||||
|
||||
Для Каждого Релиз Из СписокРелизов Цикл
|
||||
|
||||
Если Релиз["tag_name"] = "draft" Тогда
|
||||
CommonTools.СообщитьПроцесс("GitHub: Draft already exist");
|
||||
Возврат;
|
||||
IDРелиза = Релиз["id"];
|
||||
КонецЕсли;
|
||||
|
||||
Если Релиз["tag_name"] = Версия Тогда
|
||||
@@ -52,39 +73,77 @@
|
||||
ВызватьИсключение OPI_Инструменты.JSONСтрокой(СписокРелизов);
|
||||
КонецПопытки;
|
||||
|
||||
КаталогШаблонов = ДанныеПроекта.ПолучитьЗначениеНастройки("paths.templatesSrc");
|
||||
|
||||
CommonTools.СообщитьПроцесс("GitHub: Init new draft...");
|
||||
Если IDРелиза = Неопределено Тогда
|
||||
CommonTools.СообщитьПроцесс("GitHub: Init new draft...");
|
||||
Иначе
|
||||
CommonTools.СообщитьПроцесс("GitHub: Update draft...");
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDРелиза);
|
||||
КонецЕсли;
|
||||
|
||||
ПутьШаблона = ОбъединитьПути(КаталогШаблонов, "gh_draft.txt");
|
||||
ШаблонДрафта = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(ПутьШаблона));
|
||||
ТекстДрафта = СтрШаблон(ШаблонДрафта, Версия);
|
||||
ТекущаяДата = Формат(ТекущаяДата(), "ДЛФ=D");
|
||||
|
||||
МассивИзменений = Новый Массив;
|
||||
ШаблонИзменений = "| <img src=""%1%2"" width=""32""/> | %3 | %4 |";
|
||||
|
||||
Для Каждого Изменение Из Данные["changes"] Цикл
|
||||
|
||||
ТекущееИзменение = СтрШаблон(ШаблонИзменений
|
||||
, URLКонтента
|
||||
, Изменение["icon"]
|
||||
, Изменение["description_ru"]
|
||||
, Изменение["description_en"]);
|
||||
|
||||
МассивИзменений.Добавить(ТекущееИзменение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстДрафта = СтрШаблон(ШаблонДрафта
|
||||
, Версия
|
||||
, Данные["summary_ru"]
|
||||
, Данные["summary_en"]
|
||||
, СтрСоединить(МассивИзменений, Символы.ПС)
|
||||
, URLКонтента
|
||||
, Данные["image"]);
|
||||
|
||||
СтруктураЗапроса = Новый Структура;
|
||||
СтруктураЗапроса.Вставить("tag_name" , "draft");
|
||||
СтруктураЗапроса.Вставить("name" , СтрШаблон("Version %1 - %2", Версия, ТекущаяДата));
|
||||
СтруктураЗапроса.Вставить("name" , Данные["title"]);
|
||||
СтруктураЗапроса.Вставить("body" , ТекстДрафта);
|
||||
СтруктураЗапроса.Вставить("draft" , Истина);
|
||||
СтруктураЗапроса.Вставить("prerelease" , Ложь);
|
||||
|
||||
СозданиеДрафта = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
.Инициализировать("https://api.github.com/repos/bayselonarrend/OpenIntegrations/releases")
|
||||
.ДобавитьBearerАвторизацию(Токен)
|
||||
.УстановитьJsonТело(СтруктураЗапроса)
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакСтроку();
|
||||
Если ЗначениеЗаполнено(IDРелиза) Тогда
|
||||
|
||||
CommonTools.СообщитьПроцесс(СозданиеДрафта);
|
||||
Результат = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
.Инициализировать(СтрШаблон("https://api.github.com/repos/bayselonarrend/OpenIntegrations/releases/%1", IDРелиза))
|
||||
.ДобавитьBearerАвторизацию(Токен)
|
||||
.УстановитьJsonТело(СтруктураЗапроса)
|
||||
.ОбработатьЗапрос("PATCH")
|
||||
.ВернутьОтветКакСтроку();
|
||||
|
||||
Иначе
|
||||
|
||||
Результат = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
.Инициализировать("https://api.github.com/repos/bayselonarrend/OpenIntegrations/releases")
|
||||
.ДобавитьBearerАвторизацию(Токен)
|
||||
.УстановитьJsonТело(СтруктураЗапроса)
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакСтроку();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
CommonTools.СообщитьПроцесс(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СоздатьДрафтSourcecraft()
|
||||
Процедура СоздатьДрафтSourcecraft(Знач Данные)
|
||||
|
||||
ПолеТокена = ДанныеПроекта.ПолучитьЗначениеНастройки("sourcecraft.tokenField");
|
||||
Токен = ДанныеПроекта.ПолучитьЗначениеСекретныхДанных(ПолеТокена);
|
||||
Версия = ДанныеПроекта.ПолучитьЗначениеНастройки("primary.version");
|
||||
ПолеТокена = ДанныеПроекта.ПолучитьЗначениеНастройки("sourcecraft.tokenField");
|
||||
URLКонтента = ДанныеПроекта.ПолучитьЗначениеНастройки("sourcecraft.contentPath");
|
||||
Токен = ДанныеПроекта.ПолучитьЗначениеСекретныхДанных(ПолеТокена);
|
||||
|
||||
СписокРелизов = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
@@ -93,13 +152,14 @@
|
||||
.ОбработатьЗапрос("GET")
|
||||
.ВернутьОтветКакJSONКоллекцию();
|
||||
|
||||
IDРелиза = Неопределено;
|
||||
|
||||
Попытка
|
||||
|
||||
Для Каждого Релиз Из СписокРелизов["releases"] Цикл
|
||||
|
||||
Если Релиз["tag"] = "draft" Тогда
|
||||
CommonTools.СообщитьПроцесс("SourceCraft: Draft already exist");
|
||||
Возврат;
|
||||
IDРелиза = Релиз["id"];
|
||||
КонецЕсли;
|
||||
|
||||
Если Релиз["tag"] = Версия Тогда
|
||||
@@ -112,30 +172,72 @@
|
||||
Исключение
|
||||
ВызватьИсключение OPI_Инструменты.JSONСтрокой(СписокРелизов);
|
||||
КонецПопытки;
|
||||
|
||||
КаталогШаблонов = ДанныеПроекта.ПолучитьЗначениеНастройки("paths.templatesSrc");
|
||||
|
||||
CommonTools.СообщитьПроцесс("SourceCraft: Init new draft...");
|
||||
Если IDРелиза = Неопределено Тогда
|
||||
CommonTools.СообщитьПроцесс("SourceCraft: Init new draft...");
|
||||
Иначе
|
||||
CommonTools.СообщитьПроцесс("SourceCraft: Update draft...");
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(IDРелиза);
|
||||
КонецЕсли;
|
||||
|
||||
ПутьШаблона = ОбъединитьПути(КаталогШаблонов, "sc_draft.txt");
|
||||
ШаблонДрафта = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(ПутьШаблона));
|
||||
ТекстДрафта = СтрШаблон(ШаблонДрафта, Версия);
|
||||
ТекущаяДата = Формат(ТекущаяДата(), "ДЛФ=D");
|
||||
|
||||
МассивИзменений = Новый Массив;
|
||||
ШаблонИзменений = "| <img src=""%1%2"" width=""32""/> | %3 | %4 |";
|
||||
|
||||
Для Каждого Изменение Из Данные["changes"] Цикл
|
||||
|
||||
ТекущееИзменение = СтрШаблон(ШаблонИзменений
|
||||
, URLКонтента
|
||||
, Изменение["icon"]
|
||||
, Изменение["description_ru"]
|
||||
, Изменение["description_en"]);
|
||||
|
||||
МассивИзменений.Добавить(ТекущееИзменение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстДрафта = СтрШаблон(ШаблонДрафта
|
||||
, Версия
|
||||
, Данные["summary_ru"]
|
||||
, Данные["summary_en"]
|
||||
, СтрСоединить(МассивИзменений, Символы.ПС)
|
||||
, URLКонтента
|
||||
, Данные["image"]);
|
||||
|
||||
СтруктураЗапроса = Новый Структура;
|
||||
СтруктураЗапроса.Вставить("tag" , "draft");
|
||||
СтруктураЗапроса.Вставить("title" , СтрШаблон("Version %1 - %2", Версия, ТекущаяДата));
|
||||
СтруктураЗапроса.Вставить("release_notes" , ТекстДрафта);
|
||||
СтруктураЗапроса.Вставить("publish" , Ложь);
|
||||
|
||||
СозданиеДрафта = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
.Инициализировать("https://api.sourcecraft.tech/repos/bayselonarrend/openintegrations/releases")
|
||||
.ДобавитьBearerАвторизацию(Токен)
|
||||
.УстановитьJsonТело(СтруктураЗапроса)
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакСтроку();
|
||||
Если ЗначениеЗаполнено(IDРелиза) Тогда
|
||||
|
||||
CommonTools.СообщитьПроцесс(СозданиеДрафта);
|
||||
СтруктураЗапроса.Вставить("title" , Данные["title"]);
|
||||
СтруктураЗапроса.Вставить("release_notes" , ТекстДрафта);
|
||||
|
||||
Результат = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
.Инициализировать(СтрШаблон("https://api.sourcecraft.tech/releases/id:%1", IDРелиза))
|
||||
.ДобавитьBearerАвторизацию(Токен)
|
||||
.УстановитьJsonТело(СтруктураЗапроса)
|
||||
.ОбработатьЗапрос("PATCH")
|
||||
.ВернутьОтветКакСтроку();
|
||||
|
||||
Иначе
|
||||
|
||||
СтруктураЗапроса.Вставить("tag" , "draft");
|
||||
СтруктураЗапроса.Вставить("title" , Данные["title"]);
|
||||
СтруктураЗапроса.Вставить("release_notes" , ТекстДрафта);
|
||||
СтруктураЗапроса.Вставить("publish" , Ложь);
|
||||
|
||||
Результат = OPI_ЗапросыHTTP
|
||||
.НовыйЗапрос()
|
||||
.Инициализировать("https://api.sourcecraft.tech/repos/bayselonarrend/openintegrations/releases")
|
||||
.ДобавитьBearerАвторизацию(Токен)
|
||||
.УстановитьJsonТело(СтруктураЗапроса)
|
||||
.ОбработатьЗапрос("POST")
|
||||
.ВернутьОтветКакСтроку();
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
CommonTools.СообщитьПроцесс(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -13,7 +13,7 @@
|
||||
Процедура ЗаписатьФайлJSON(Знач Путь, Знач Данные) Экспорт
|
||||
|
||||
Запись = Новый ЗаписьJSON;
|
||||
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix, Символы.Таб);
|
||||
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix, " ");
|
||||
Запись.ОткрытьФайл(Путь, , , ПараметрыЗаписиJSON);
|
||||
ЗаписатьJSON(Запись, Данные);
|
||||
Запись.Закрыть();
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
[
|
||||
{
|
||||
"version": "1.34.0",
|
||||
"title": "Version 1.34.0 - 0.04.2026",
|
||||
"summary_ru": "Методы работы с RSS",
|
||||
"summary_en": "Methods of working with RSS",
|
||||
"image": "media/Covers/RSS.png",
|
||||
"changes": [
|
||||
{
|
||||
"lib": "RSS",
|
||||
"icon": "media/RSS.png",
|
||||
"description_ru": "Методы формирования RSS (3 функции)",
|
||||
"description_en": "RSS generation methods (3 functions)"
|
||||
},
|
||||
{
|
||||
"lib": "RSS",
|
||||
"icon": "media/RSS.png",
|
||||
"description_ru": "Методы формирования Atom (3 функции)",
|
||||
"description_en": "Atom generation methods (3 functions)"
|
||||
},
|
||||
{
|
||||
"lib": "TCP",
|
||||
"icon": "media/TCP.png",
|
||||
"description_ru": "Добавлен функционал TCP-сервера",
|
||||
"description_en": "Added TCP server functionality"
|
||||
},
|
||||
{
|
||||
"lib": "All",
|
||||
"icon": "media/logo.png",
|
||||
"description_ru": "Исправлен баг вывода справки CLI для `tcp` и `ssh`",
|
||||
"description_en": "Fixed CLI help output bug for `tcp` and `ssh`"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1 @@
|
||||
,T480/bayselonarrend,T480,15.03.2026 11:29,file:///C:/Users/bayselonarrend/AppData/Roaming/LibreOffice/4;
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||

|
||||

|
||||
|
||||
🇷🇺: Обновление Открытого пакета интеграций %1: Методы работы
|
||||
🇺🇸: Open integrations package update %1: Methods of working with
|
||||
🇷🇺: Обновление Открытого пакета интеграций %1: %2
|
||||
🇺🇸: Open integrations package update %1: %3
|
||||
|
||||
## Новые функции / New functions
|
||||
|
||||
@@ -10,8 +10,7 @@
|
||||
|
||||
| API | 🇷🇺 | 🇺🇸 |
|
||||
|-|-|-|
|
||||
| <img src="https://raw.githubusercontent.com/Bayselonarrend/OpenIntegrations/main/media/logo.png" width="32"/> | Шаблон | Template |
|
||||
|
||||
%4
|
||||
|
||||
## Скачать / Download
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||

|
||||

|
||||
|
||||
<br>
|
||||
|
||||
**🇷🇺: Обновление Открытого пакета интеграций %1: Методы работы**
|
||||
**🇺🇸: Open integrations package update %1: Methods of working with**
|
||||
**🇷🇺: Обновление Открытого пакета интеграций %1: %2**
|
||||
**🇺🇸: Open integrations package update %1: %3**
|
||||
|
||||
<hr>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
| API | 🇷🇺 | 🇺🇸 |
|
||||
|-|-|-|
|
||||
| <img src="https://sourcecraft.dev/file?owner=bayselonarrend&repo=openintegrations&rev=main&path=media/logo.png" width="32"/> | Шаблон | Template |
|
||||
%4
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user