#Использовать 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); ФС.ОбеспечитьКаталог(КаталогDataDocusaurus); ФС.ОбеспечитьКаталог(КаталогPagesDocusaurus); ФС.ОбеспечитьКаталог(КаталогКартинокКурсовDocusaurus); ФС.ОбеспечитьКаталог(КаталогКартинокКурсовРепозитория); ОбъектКаталогКурсов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)); КонецПроцедуры