diff --git a/.gitignore b/.gitignore index 3a02f906..30a04000 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ exec\.log bdd-log\.xml *.ospx +oscript_modules/ diff --git a/packagedef b/packagedef index f922905a..b7cfd7a8 100644 --- a/packagedef +++ b/packagedef @@ -5,14 +5,15 @@ .Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта()) .ВерсияСреды("1.0.16") .ЗависитОт("logos") - .ЗависитОт("cmdline", "0.4.1") + .ЗависитОт("cmdline", "0.6.1") .ЗависитОт("tempfiles") .ЗависитОт("tool1cd", "0.4") - .ЗависитОт("v8runner", "0.7.0") - .ЗависитОт("gitrunner", "1.1.0") + .ЗависитОт("v8runner", "0.11.2") + .ЗависитОт("gitrunner", "1.5.0") .ЗависитОт("strings") - .ЗависитОт("1commands", "1.1.1") + .ЗависитОт("1commands", "1.2.1") .ЗависитОт("v8unpack") + .ЗависитОт("fs") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("features") diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" index 2bb48b9c..15e7eca5 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Export.os" @@ -32,6 +32,7 @@ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-amount-look-for-license", "<число> количество повторов получения лицензии (попытка подключения каждые 10 сек), 0 - без ограничений"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-stop-if-empty-comment", "Остановить, если Комментарий к версии пустой"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-auto-set-tags", "Автоматическая установка тэгов по версия конфиграции"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-increment", "Частичная выгрузка конфигурации"); Парсер.ДобавитьКоманду(ОписаниеКоманды); @@ -49,6 +50,7 @@ ПроверитьАвторовХранилища = ПараметрыКоманды["-check-authors"]; ПрерватьВыполнениеБезКомментарияКВерсии = ПараметрыКоманды["-stop-if-empty-comment"]; АвтоматическаяУстановкаТэговПоВерсиям = ПараметрыКоманды["-auto-set-tags"]; + ВыгружатьТолькоИзменения = ПараметрыКоманды["-increment"]; Если ЛокальныйКаталогГит = Неопределено Тогда @@ -106,6 +108,7 @@ Распаковщик.ВерсияПлатформы = ПараметрыКоманды["-v8version"]; Распаковщик.ДоменПочтыДляGitПоУмолчанию = ПараметрыКоманды["-email"]; Распаковщик.ПереименовыватьФайлМодуляОбычнойФормы = ПереименовыватьФайлМодуляОбычнойФормы; + Распаковщик.ТолькоИзменения = ВыгружатьТолькоИзменения; ДополнительныеПараметры.Лог.Информация("Начинаю выгрузку исходников"); РаспаковщикКонфигурации.ВыполнитьЭкспортИсходников(Распаковщик, ПараметрыКоманды["ПутьКХранилищу"], diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 7b2dba51..7fd8af64 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -15,6 +15,7 @@ #Использовать 1commands #Использовать v8unpack #Использовать gitrunner +#Использовать fs Перем Лог; Перем мФайлПрограммыРаспаковки; @@ -32,6 +33,7 @@ Перем ДоменПочтыДляGitПоУмолчанию Экспорт; Перем ВерсияПлатформы Экспорт; Перем ПереименовыватьФайлМодуляОбычнойФормы Экспорт; +Перем ТолькоИзменения Экспорт; // Выполняет выгрузку конфигурации в файлы // и распределение файлов по каталогам согласно иерархии метаданных. @@ -49,9 +51,27 @@ СоздатьКаталог(ВыходнойКаталог); КонецЕсли; + КаталогВыгрузки = ?(ТолькоИзменения, ВыходнойКаталог, КаталогПлоскойВыгрузки); Попытка - ВыгрузитьМодулиКонфигурации(ФайлКонфигурации, КаталогПлоскойВыгрузки, Формат); - РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, ВыходнойКаталог, Формат); + ВыгрузитьМодулиКонфигурации(ФайлКонфигурации, КаталогВыгрузки, Формат); + Если НЕ ТолькоИзменения Тогда + РазложитьМодули1СПоПапкамСогласноИерархииМетаданных(КаталогПлоскойВыгрузки, ВыходнойКаталог, Формат); + Иначе + МассивФайлов = НайтиФайлы(КаталогВыгрузки, "*.bin", Истина); + Для каждого Файл из МассивФайлов Цикл + Если Нрег(Файл.Имя) = "form.bin" Тогда + КаталогФормы = ОбъединитьПути(Файл.Путь, Файл.ИмяБезРасширения); + СоздатьКаталог(КаталогФормы); + ФС.ОбеспечитьПустойКаталог(КаталогФормы); + РаспаковатьКонтейнерМетаданных(Файл.ПолноеИмя, КаталогФормы); + КонецЕсли; + КонецЦикла; + + Если Новый Файл(ОбъединитьПути(КаталогВыгрузки, "renames.txt")).Существует() Тогда + УдалитьВременныеФайлыПриНеобходимости(ОбъединитьПути(КаталогВыгрузки, "renames.txt")); + КонецЕсли; + + КонецЕсли; Исключение УдалитьВременныеФайлыПриНеобходимости(КаталогПлоскойВыгрузки); ВызватьИсключение; @@ -115,18 +135,37 @@ СоздатьКаталог(КаталогПлоскойВыгрузки); КонецЕсли; - МассивФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы()); - Если МассивФайлов.Количество() <> 0 Тогда - ВызватьИсключение "В каталоге <"+КаталогПлоскойВыгрузки+"> не должно быть файлов"; - КонецЕсли; + Если НЕ ТолькоИзменения Тогда + МассивФайлов = НайтиФайлы(КаталогПлоскойВыгрузки, ПолучитьМаскуВсеФайлы()); + Если МассивФайлов.Количество() <> 0 Тогда + ВызватьИсключение "В каталоге <"+КаталогПлоскойВыгрузки+"> не должно быть файлов"; + КонецЕсли; - ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); - ПараметрыЗапуска.Добавить("/Visible"); - ПараметрДампаКонфигурации = СтрШаблон("/DumpConfigToFiles ""%1"" -format %2", КаталогПлоскойВыгрузки, ТРег(Формат)); - ПараметрыЗапуска.Добавить(ПараметрДампаКонфигурации); + ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); + ПараметрыЗапуска.Добавить("/Visible"); + ПараметрДампаКонфигурации = СтрШаблон("/DumpConfigToFiles ""%1"" -format %2", КаталогПлоскойВыгрузки, ТРег(Формат)); + ПараметрыЗапуска.Добавить(ПараметрДампаКонфигурации); + + ВыполнитьКомандуКонфигуратора(Конфигуратор, ПараметрыЗапуска); - ВыполнитьКомандуКонфигуратора(Конфигуратор, ПараметрыЗапуска); + Иначе + ТекущийФайлВерсийМетаданных = Новый Файл(ОбъединитьПути(КаталогПлоскойВыгрузки,"ConfigDumpInfo.xml")); + ТолькоИзмененияЕслиФайлЕсть = ?(ТекущийФайлВерсийМетаданных.Существует(), ТолькоИзменения, Ложь); + Попытка + Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогПлоскойВыгрузки, , ТолькоИзмененияЕслиФайлЕсть); + Исключение + + ОписаниеОшибки = ОписаниеОшибки(); + Если ПроверитьОписаниеОшибкиНаКритичность(ОписаниеОшибки) Тогда + УдалитьВременныеФайлыПриНеобходимости(Конфигуратор.КаталогСборки()); + ВызватьИсключение; + КонецЕсли; + КонецПопытки; + + УдалитьВременныеФайлыПриНеобходимости(Конфигуратор.КаталогСборки()); + КонецЕсли; + КонецПроцедуры Функция ПолучитьМенеджерКонфигуратора() @@ -251,7 +290,7 @@ КопироватьФайл(Файл.ПолноеИмя, НовыйФайл.ПолноеИмя); - Если Нрег(Прав(Файл.ПолноеИмя, 5)) = ".form" Или Нрег(Файл.Имя) = "form.bin" Тогда + Если Нрег(Файл.Имя) = "form.bin" Тогда КаталогФормы = ОбъединитьПути(НовыйКаталог.ПолноеИмя, НовыйФайл.ИмяБезРасширения); СоздатьКаталог(КаталогФормы); РаспаковатьКонтейнерМетаданных(НовыйФайл.ПолноеИмя, КаталогФормы, Переименования, ФайлВыгрузкиКаталог.ПолноеИмя + ПолучитьРазделительПути()); @@ -403,7 +442,7 @@ КонецПроцедуры -Процедура РаспаковатьКонтейнерМетаданных(Знач ФайлРаспаковки, Знач КаталогРаспаковки, Знач Переименования, Знач КорневойКаталог) +Процедура РаспаковатьКонтейнерМетаданных(Знач ФайлРаспаковки, Знач КаталогРаспаковки, Знач Переименования = "", Знач КорневойКаталог = "") dllРаспаковать(ФайлРаспаковки, КаталогРаспаковки); ВыполнитьСборкуМусора(); // см. камент к процедуре dllРаспаковать @@ -415,10 +454,15 @@ СтароеИмяФайла = ФайлМодуля.ПолноеИмя; НовоеИмяФайла = ОбъединитьПути(ФайлМодуля.Путь, "Module.bsl"); ПереместитьФайл(СтароеИмяФайла, НовоеИмяФайла); - ДобавитьПереименование(Переименования, - СтрЗаменить(СтароеИмяФайла, КорневойКаталог, ""), - СтрЗаменить(НовоеИмяФайла, КорневойКаталог, "")); - + Если НЕ ПустаяСтрока(Переименования) Тогда + Если ПустаяСтрока(КорневойКаталог) Тогда + ВызватьИсключение + "РаспаковатьКонтейнерМетаданных при заполненном Переименования ожидали и не пустое КорневойКаталог"; + КонецЕсли; + ДобавитьПереименование(Переименования, + СтрЗаменить(СтароеИмяФайла, КорневойКаталог, ""), + СтрЗаменить(НовоеИмяФайла, КорневойКаталог, "")); + КонецЕсли; КонецЦикла; КонецЕсли; @@ -1421,7 +1465,6 @@ Возврат КоличествоЦикловОжиданияЛицензииПоУмолчанию; КонецФункции - ////////////////////////////////////////////////////////////////////////////////////////////// СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; @@ -1431,3 +1474,4 @@ ДоменПочтыДляGitПоУмолчанию = "localhost"; УдалятьВременныеФайлы = Ложь; КоличествоЦикловОжиданияЛицензииПоУмолчанию = 1; +ТолькоИзменения = Ложь;