1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-04-26 20:43:22 +02:00
Files
OpenIntegrations/ci/os/DocsDeployScript.os
T
Anton Titovets 58231cbea7 Fastfix
2026-04-17 16:49:28 +03:00

175 lines
10 KiB
Plaintext

#Использовать fs
#Использовать "./internal"
Процедура ПриСозданииОбъекта(Знач Вариант_ = Неопределено, Знач Язык_ = Неопределено)
Если Вариант_ = Неопределено Тогда
Вариант = АргументыКоманднойСтроки[0];
Иначе
Вариант = Вариант_;
КонецЕсли;
Если Язык_ = Неопределено Тогда
Язык = АргументыКоманднойСтроки[1];
Иначе
Язык = Язык_;
КонецЕсли;
ДанныеПроекта = Новый ProjectData;
Обработчик = Новый DocsPageLocalizator(ДанныеПроекта, Язык);
NPM = ДанныеПроекта.ПолучитьЗначениеНастройки("local.npmPath");
КаталогОсновной = ДанныеПроекта.ПолучитьЗначениеНастройки("docs.deployMainSrc");
КаталогДокументов = ДанныеПроекта.ПолучитьЗначениеНастройки("docs.deployDocsSrc");
КаталогСборки = ДанныеПроекта.ПолучитьЗначениеНастройки("docs.deployBuildSrc");
КаталогNodeМодулей = ДанныеПроекта.ПолучитьЗначениеНастройки("docs.deployModulesSrc");
КаталогMDЯзыка = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("docsMdSrc", Язык);
КаталогРепозиторияКурсов = "./OpenIntegrations-Courses";
ОбъектСборки = Новый Файл(КаталогСборки);
ОбъектNodeМодулей = Новый Файл(КаталогNodeМодулей);
ОбъектДокументов = Новый Файл(КаталогДокументов);
Если ОбъектСборки.Существует() Тогда
УдалитьФайлы(КаталогСборки);
КонецЕсли;
Если ОбъектNodeМодулей.Существует() Тогда
УдалитьФайлы(ОбъектNodeМодулей);
КонецЕсли;
Если ОбъектДокументов.Существует() Тогда
УдалитьФайлы(КаталогДокументов, "*");
КонецЕсли;
ФС.КопироватьСодержимоеКаталога(КаталогMDЯзыка, КаталогДокументов);
Если Язык = "ru" Тогда
ПодготовитьКурсыДляRU(КаталогОсновной, КаталогРепозиторияКурсов);
КонецЕсли;
Попытка
CommonTools.ЗапуститьВнешнееПриложение(СтрШаблон("""%1"" install", NPM) , КаталогОсновной);
CommonTools.ЗапуститьВнешнееПриложение(СтрШаблон("""%1"" run build", NPM), КаталогОсновной);
Если Вариант = "release" Тогда
КонфигурацияRclone = ДанныеПроекта.ПолучитьЗначениеНастройки("local.rcloneConf");
КаталогХостинга = ДанныеПроекта.ПолучитьЗначениеНастройкиЛокализации("remoteDocsSrc", Язык);
ВызовДеплоя = СтрШаблон("rclone sync ""%1"" %2:%3 --progress"
, КаталогСборки
, КонфигурацияRclone
, КаталогХостинга);
CommonTools.ЗапуститьВнешнееПриложение(ВызовДеплоя);
КонецЕсли;
CommonTools.СообщитьПроцесс("Docs processing finished successfully");
Успех = Истина;
Исключение
CommonTools.СообщитьПроцесс(ОписаниеОшибки());
CommonTools.СообщитьПроцесс("Docs processing terminated");
Успех = Ложь;
КонецПопытки;
Если Вариант = "release" Тогда
CommonTools.СообщитьПроцесс("Cleaning...");
УдалитьФайлы(КаталогСборки);
УдалитьФайлы(КаталогNodeМодулей);
КонецЕсли;
Если Не Успех Тогда
ЗавершитьРаботу(1);
КонецЕсли;
КонецПроцедуры
Процедура ПодготовитьКурсыДляRU(Знач КаталогDocusaurus, Знач КаталогРепозиторияКурсов)
КаталогКурсовDocusaurus = КаталогDocusaurus + "courses";
КаталогDataDocusaurus = КаталогDocusaurus + "data";
КаталогPagesDocusaurus = КаталогDocusaurus + "src/pages";
КаталогКартинокКурсовDocusaurus = КаталогDocusaurus + "static/img/Courses";
КаталогКартинокКурсовРепозитория = КаталогРепозиторияКурсов + "/static/img/Courses";
ОбъектКаталогКурсовDocusaurus = Новый Файл(КаталогКурсовDocusaurus);
Если ОбъектКаталогКурсовDocusaurus.Существует() Тогда
УдалитьФайлы(КаталогКурсовDocusaurus);
КонецЕсли;
ОбъектКаталогКартинокКурсовDocusaurus = Новый Файл(КаталогКартинокКурсовDocusaurus);
Если ОбъектКаталогКартинокКурсовDocusaurus.Существует() Тогда
УдалитьФайлы(КаталогКартинокКурсовDocusaurus, "*");
КонецЕсли;
ОбъектКаталогРепозиторияКурсов = Новый Файл(КаталогРепозиторияКурсов);
Если ОбъектКаталогРепозиторияКурсов.Существует() Тогда
CommonTools.СообщитьПроцесс("Updating OpenIntegrations-Courses...");
CommonTools.ЗапуститьВнешнееПриложение("git fetch --all", КаталогРепозиторияКурсов);
CommonTools.ЗапуститьВнешнееПриложение("git reset --hard origin/master", КаталогРепозиторияКурсов);
Иначе
CommonTools.СообщитьПроцесс("Cloning OpenIntegrations-Courses...");
CommonTools.ЗапуститьВнешнееПриложение("git clone https://github.com/bayselonarrend/OpenIntegrations-Courses.git");
КонецЕсли;
Приостановить(10000);
ФС.КопироватьСодержимоеКаталога(КаталогРепозиторияКурсов + "/courses", КаталогКурсовDocusaurus);
ФайлДанныхКурсов = Новый Файл(КаталогРепозиторияКурсов + "/data/courses.json");
Если ФайлДанныхКурсов.Существует() Тогда
КопироватьФайл(КаталогРепозиторияКурсов + "/data/courses.json", КаталогDataDocusaurus + "/courses.json");
КонецЕсли;
ФайлСтраницыКурсов = Новый Файл(КаталогРепозиторияКурсов + "/src/pages/courses.js");
Если ФайлСтраницыКурсов.Существует() Тогда
КопироватьФайл(КаталогРепозиторияКурсов + "/src/pages/courses.js", КаталогPagesDocusaurus + "/courses.js");
КонецЕсли;
ФайлСтилейКурсов = Новый Файл(КаталогРепозиторияКурсов + "/src/pages/courses.module.css");
Если ФайлСтилейКурсов.Существует() Тогда
КопироватьФайл(КаталогРепозиторияКурсов + "/src/pages/courses.module.css", КаталогPagesDocusaurus + "/courses.module.css");
КонецЕсли;
ФайлКаталогКартинокКурсовРепозитория = Новый Файл(КаталогКартинокКурсовРепозитория);
Если ФайлКаталогКартинокКурсовРепозитория.Существует() Тогда
ФС.КопироватьСодержимоеКаталога(КаталогКартинокКурсовРепозитория, КаталогКартинокКурсовDocusaurus);
КонецЕсли;
ОбновитьКаталогКурсаНаUUID(КаталогКурсовDocusaurus);
КонецПроцедуры
Процедура ОбновитьКаталогКурсаНаUUID(Знач КаталогКурсовDocusaurus)
СтароеИмяКаталога = "Into-OpenIntegrations";
НовыйUUID = НРег(Строка(Новый УникальныйИдентификатор()));
СтарыйКаталогКурса = КаталогКурсовDocusaurus + "/" + СтароеИмяКаталога;
НовыйКаталогКурса = КаталогКурсовDocusaurus + "/" + НовыйUUID;
ОбъектСтарыйКаталогКурса = Новый Файл(СтарыйКаталогКурса);
Если Не ОбъектСтарыйКаталогКурса.Существует() Тогда
ВызватьИсключение СтрШаблон("Source course directory not found: %1", СтарыйКаталогКурса);
КонецЕсли;
ФС.КопироватьСодержимоеКаталога(СтарыйКаталогКурса, НовыйКаталогКурса);
УдалитьФайлы(СтарыйКаталогКурса);
ПутьSidebars = КаталогКурсовDocusaurus + "/sidebars.js";
ТекстSidebars = ПолучитьСтрокуИзДвоичныхДанных(Новый ДвоичныеДанные(ПутьSidebars));
ТекстSidebars = СтрЗаменить(ТекстSidebars, СтароеИмяКаталога, НовыйUUID);
CommonTools.ЗаписатьТекст(ТекстSidebars, ПутьSidebars);
CommonTools.СообщитьПроцесс(СтрШаблон("Courses UUID generated: %1", НовыйUUID));
КонецПроцедуры