From 76d3be4667cbfb28b5d39edf93d174db46881f0d Mon Sep 17 00:00:00 2001 From: Boris Sinitsyn Date: Wed, 25 May 2022 14:57:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D1=8B,=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=84=D0=BE=20=D0=BC=D0=B5=D1=82=D0=B0=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85,=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D0=B8,=20=D0=BF=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + examples/HRM.edf | 30 +++ examples/pacman_make_CF.bat | 74 +++++++ ...20\261\321\203\321\202\320\270\320\262.os" | 14 +- ...20\265\321\200\321\201\320\270\321\217.os" | 12 +- ...20\270\320\273\320\270\321\211\320\260.os" | 200 ++++++++++-------- ...21\202\320\260\320\273\320\276\320\263.os" | 18 +- ...21\216\320\221\320\260\320\267\321\203.os" | 49 ++--- ...20\260\320\272\321\201\320\270\321\201.os" | 194 ++++++++--------- ...20\265\321\200\320\266\320\272\320\270.os" | 32 +-- ...20\260\320\271\320\273\320\276\320\262.os" | 63 +++--- ...20\261\321\203\321\202\320\270\320\262.os" | 78 ++++--- ...21\202\320\260\320\262\320\272\320\270.os" | 176 +++++++-------- ...20\265\321\202\321\200\320\260\320\274.os" | 36 ++-- ...21\203\321\202\320\270\320\262\320\260.os" | 116 +++++----- ...0\260\320\275\320\264\321\213.os-template" | 2 +- ...20\266\320\265\320\275\320\270\321\217.os" | 58 ++--- ...20\261\320\276\321\200\320\272\320\270.os" | 65 +++--- ...21\201\321\202\320\265\320\274\321\213.os" | 12 +- ...0\260\320\275\320\275\321\213\321\205.epf" | Bin 6267 -> 6241 bytes 20 files changed, 675 insertions(+), 555 deletions(-) create mode 100644 examples/HRM.edf create mode 100644 examples/pacman_make_CF.bat diff --git a/README.md b/README.md index ad665ff..c915698 100644 --- a/README.md +++ b/README.md @@ -35,3 +35,4 @@ Есть бесплатный вебинар [Открытый инструментарий счастливого 1С-ника](https://youtu.be/RuFXBLzch2o) +Посмотрите пример команд в [examples/pacman_make_CF.bat](./examples/pacman_make_CF.bat) \ No newline at end of file diff --git a/examples/HRM.edf b/examples/HRM.edf new file mode 100644 index 0000000..46071cf --- /dev/null +++ b/examples/HRM.edf @@ -0,0 +1,30 @@ +{1, +{ +{1,2, +{"en","Фирма ""1С"""}, +{"ru","Фирма ""1С"""} +}, +{1,2, +{"en","ЗарплатаИУправлениеПерсоналом"}, +{"ru","ЗарплатаИУправлениеПерсоналом"} +}, +{#base64:} +}, +{1, +{1,0,"ЗарплатаИУправлениеПерсоналомКОРП","Фирма ""1С""","%ВерсияМетаданных%","1c\HRM\%НомерСборки%", +{ +{"/", +{1, +{a81674e9-32f0-4ea6-aeae-799e6ab4a48b,"1Cv8.cf - Файл конфигурации",1,00000000-0000-0000-0000-000000000000,"1c\HRM","",124fa494-1559-4495-b896-3f2415d3474c,"1Cv8.cf",1,0,0,1} +}, +{0}, +{0} +} +} +} +}, +{1,124fa494-1559-4495-b896-3f2415d3474c,"CheckoutDir",0,"V8BuildRoot"}, +{1,"Полный",0, +{0},00000000-0000-0000-0000-000000000000,"",00000000-0000-0000-0000-000000000000,""}, +{0} +} \ No newline at end of file diff --git a/examples/pacman_make_CF.bat b/examples/pacman_make_CF.bat new file mode 100644 index 0000000..5dc292c --- /dev/null +++ b/examples/pacman_make_CF.bat @@ -0,0 +1,74 @@ +:: %1 - Номер версии в хранилище +:: %2 - Наименование направления БД в репозитории (bp, zup) +:: %3 - Название компании, чей репозиторий, если он не общий (someone, anyone) + +@echo off +@chcp 65001>nul + +:: Установка имен для: каталога хранилища, файла манифеста и каталога создания дистрибутива +@set db_name=%3_%2 +@if [%3] == [] (@set db_name=%2) + + +:: Адрес БД +@set DataBase=/SApp1C\container_%2 +:: Авторизация в БД (эти же данные использую для доступа в хранилище) +@set User=AdminUser +@set Pass=AdminPass + +@echo. +@echo 1. Установка настроек доступа к БД +@call packman set-database %DataBase% -db-user %User% -db-pwd %Pass% + + +:: Версия 1С для запуска +@set v8Ver="-v8version 8.3.21.1302" +:: Адрес хранилища +@set RepoUrl=tcp://localhost/%db_name% +:: Файл для записи доп. информации (версия хранилища, коммит) +@set versionfile=.\%db_name%.vers + +@echo. +@echo 2. Загрузка конфигурации из хранилища +@call packman load-storage %RepoUrl% -storage-user %User% -storage-pwd %Pass% %v8Ver% -storage-v %1 -details %versionfile% + + +@echo. +@echo 3. Снятие с поддержки конфигурации в БД +@call packman drop-support %v8Ver% + + +@echo. +@echo 4. Создание файла поставки +@call packman make-cf %v8Ver% + + +:: Файл ранее созданного манифеста с помощью обработки из каталога библиотеки ./tools/ПомощникСозданияМанифестаПоставки.epf +@set FileEdf=./%db_name%.edf +:: Каталог для сохранения файлов поставки дистрибутива +@set DistFile=./file_%db_name% +:: Использование файла с версией хранилища (-prop-files) может быть заменено установкой переменной +::@set VPACKMAN_BUILDVARS=НомерВерсииХранилища=%1 + +@echo. +@echo 5. Создание дистрибутива в виде файлов +@call packman make-dist %FileEdf% -out %DistFile% -files %v8Ver% -prop-files %versionfile% + +:: Подсчет hash-суммы файла +@FORFILES /P %DistFile% /S /M *.cf /C "cmd /c CertUtil -hashfile @file MD5 > @file.md5" + + +:: Каталог для сохранения файлов setup дистрибутива +::@set DistSetup=./setup_%db_name% + +::@echo. +::@echo Создание дистрибутива в виде установочного файла +::@call packman make-dist %FileEdf% -out %DistSetup% -setup %v8Ver% + + +:: Каталог для сохранения архива с файлами поставки дистрибутива +@set DistZip=./zip_%db_name% + +@echo. +@echo 6. Создание архива дистрибутива +@call packman zip-dist -in %DistFile% -out %DistZip% diff --git "a/src/\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\260\320\220\321\200\321\205\320\270\320\262\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" "b/src/\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\260\320\220\321\200\321\205\320\270\320\262\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" index eab8178..50e5c5c 100644 --- "a/src/\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\260\320\220\321\200\321\205\320\270\320\262\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" +++ "b/src/\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\260\320\220\321\200\321\205\320\270\320\262\320\270\321\200\320\276\320\262\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" @@ -8,14 +8,14 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Создание архива для удобного тиражирования"); - + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-in", "Путь к каталогу дистрибутива"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-name-prefix", "Префикс имени архива, например erp20"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-mdinfo", "Каталог с файлом v8-metadata.info, генерируемым командой make-dist"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-out", "Выходной каталог с архивом"); - + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры @@ -26,7 +26,7 @@ // ПараметрыКоманды - Соответствие ключей командной строки и их значений // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - + Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); УправлениеКонфигуратором = ОкружениеСборки.ПолучитьКонфигуратор(); @@ -64,12 +64,12 @@ КонецФункции Функция СформироватьИмяАрхива(Знач Префикс, Знач ОписаниеМетаданных) - + Если Не ЗначениеЗаполнено(Префикс) Тогда Префикс = ОкружениеСборки.ИмяКаталогаФормированияДистрибутива(); КонецЕсли; - Имя = ?(ПустаяСтрока(Префикс),"", Префикс + "-"); + Имя = ?(ПустаяСтрока(Префикс),"", Префикс + "-"); Если ЗначениеЗаполнено(ОписаниеМетаданных) Тогда Имя = Имя + ОкружениеСборки.ОпределитьСтандартноеИмяКаталогаШаблона(ОписаниеМетаданных); КонецЕсли; @@ -79,7 +79,7 @@ КонецФункции // СформироватьИмяАрхива(Знач Префикс, Знач Версия = "") Процедура АрхивироватьДистрибутив(Знач ВыходнойКаталог, Знач ИмяАрхива, Знач КаталогДляАрхивации) - + Лог.Отладка("ВыходнойКаталог = " + ВыходнойКаталог); Лог.Отладка("ИмяАрхива = " + ИмяАрхива); Лог.Отладка("КаталогДляАрхивации = " + КаталогДляАрхивации); diff --git "a/src/\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\260\320\222\320\265\321\200\321\201\320\270\321\217.os" "b/src/\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\260\320\222\320\265\321\200\321\201\320\270\321\217.os" index 1f90405..57afb28 100644 --- "a/src/\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\260\320\222\320\265\321\200\321\201\320\270\321\217.os" +++ "b/src/\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\260\320\222\320\265\321\200\321\201\320\270\321\217.os" @@ -3,20 +3,20 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Вывод версии приложения"); - Парсер.ДобавитьКоманду(ОписаниеКоманды); + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Вывод версии приложения"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - - Сообщить(ПараметрыСистемы.ВерсияПродукта()); - Возврат 0; + Сообщить(ПараметрыСистемы.ВерсияПродукта()); + + Возврат 0; КонецФункции Процедура ПоказатьСправкуПоКоманде(Знач Парсер, Знач ИмяКоманды) - Парсер.ВывестиСправкуПоКоманде(ИмяКоманды); + Парсер.ВывестиСправкуПоКоманде(ИмяКоманды); КонецПроцедуры diff --git "a/src/\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\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\267\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" "b/src/\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\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\267\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" index efd4c9e..6d48107 100644 --- "a/src/\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\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\267\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" +++ "b/src/\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\260\320\222\321\213\320\263\321\200\321\203\320\267\320\270\321\202\321\214\320\230\320\267\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\260.os" @@ -11,7 +11,7 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выгрузка версии из хранилища в рабочую среду"); Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "АдресХранилища", "Хранилище конфигурации 1С из которого выполняется сборка"); // TODO с помощью tool1cd можно не применять авторизацию @@ -20,10 +20,10 @@ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-storage-v", "Версия в хранилище, которую включаем в дистрибутив (опционально)"); Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы 1С"); Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-use-tool1cd", "Использовать для чтения хранилища Tool1CD"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-details", "Выходной файл с параметрами коммита хранилища (только для tool1cd)"); - + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-details", "Выходной файл с параметрами коммита хранилища (опционально)"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); - + КонецПроцедуры // Выполняет логику команды @@ -32,9 +32,9 @@ // ПараметрыКоманды - Соответствие ключей командной строки и их значений // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - + Параметры = РазобратьПараметры(ПараметрыКоманды); - + Попытка УправлениеКонфигуратором = ОкружениеСборки.ПолучитьКонфигуратор(); @@ -51,6 +51,7 @@ ЗагрузитьКонфигурациюВБазуСборки(УправлениеКонфигуратором, ФайлВерсии); Иначе ВыгрузитьВерсиюИзХранилища(УправлениеКонфигуратором, Параметры.АдресХранилища, Параметры.ВерсияХранилища, Параметры.ПользовательХранилища, Параметры.ПарольХранилища); + СоздатьФайлСВерсиейХранилища(Параметры.ВерсияХранилища, Параметры.ФайлПараметровКоммита); КонецЕсли; Исключение @@ -61,7 +62,7 @@ ВФ.Удалить(); Возврат 0; - + КонецФункции Процедура ЗагрузитьКонфигурациюВБазуСборки(Знач УправлениеКонфигуратором, Знач ФайлВерсии) Экспорт @@ -72,13 +73,13 @@ // экспортная для целей тестирования Функция РазобратьПараметры(Знач ПараметрыКоманды) Экспорт - + Результат = Новый Структура; - + Если ПустаяСтрока(ПараметрыКоманды["АдресХранилища"]) Тогда ВызватьИсключение "Не задан адрес хранилища"; КонецЕсли; - + Результат.Вставить("АдресХранилища", ПараметрыКоманды["АдресХранилища"]); Результат.Вставить("ПользовательХранилища", ПараметрыКоманды["-storage-user"]); Результат.Вставить("ПарольХранилища", ПараметрыКоманды["-storage-pwd"]); @@ -86,9 +87,9 @@ Результат.Вставить("Версия1С", ПараметрыКоманды["-v8version"]); Результат.Вставить("ИспользоватьTool1CD", ПараметрыКоманды["-use-tool1cd"]); Результат.Вставить("ФайлПараметровКоммита", ПараметрыКоманды["-details"]); - + Возврат Результат; - + КонецФункции Процедура ВыгрузитьВерсиюИзХранилища(Конфигуратор, @@ -96,42 +97,51 @@ Знач ВерсияХранилища, Знач ПользовательХранилища, Знач ПарольХранилища = "") Экспорт - - ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); - ПараметрыЗапуска.Добавить("/ConfigurationRepositoryF """+ПутьКХранилищу+""""); + ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); + ПараметрыЗапуска.Добавить("/ConfigurationRepositoryF """+ПутьКХранилищу+""""); - ПараметрыЗапуска.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); + ПараметрыЗапуска.Добавить("/ConfigurationRepositoryN """+ПользовательХранилища+""""); - Если ЗначениеЗаполнено(ПарольХранилища) Тогда - ПараметрыЗапуска.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); - КонецЕсли; + Если ЗначениеЗаполнено(ПарольХранилища) Тогда + ПараметрыЗапуска.Добавить("/ConfigurationRepositoryP """+ПарольХранилища+""""); + КонецЕсли; - ПараметрыЗапуска.Добавить("/ConfigurationRepositoryUpdateCfg"); + ПараметрыЗапуска.Добавить("/ConfigurationRepositoryUpdateCfg"); Если ЗначениеЗаполнено(ВерсияХранилища) Тогда ПараметрыЗапуска.Добавить("-v "+ВерсияХранилища); КонецЕсли; - - ПараметрыЗапуска.Добавить("-force"); - + + ПараметрыЗапуска.Добавить("-force"); + ПараметрыЗапуска.Добавить("/UpdateDBCfg"); - - Лог.Отладка("Получению новую версию из хранилища"); - - Попытка - Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); - Исключение - ТекстОшибки = Конфигуратор.ВыводКоманды(); - ВызватьИсключение ТекстОшибки; + Лог.Отладка("Получаю новую версию из хранилища"); + + Попытка + Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); + Исключение + + ТекстОшибки = Конфигуратор.ВыводКоманды(); + ВызватьИсключение ТекстОшибки; КонецПопытки; КонецПроцедуры +Процедура СоздатьФайлСВерсиейХранилища(Знач ВерсияХранилища, Знач ВыходнойФайл = Неопределено) + + Если ЗначениеЗаполнено(ВыходнойФайл) И ВерсияХранилища <> Неопределено Тогда + Документ = Новый ТекстовыйДокумент; + Документ.ДобавитьСтроку("НомерВерсииХранилища=" + ВерсияХранилища); + Документ.Записать(ВыходнойФайл); + КонецЕсли; + +КонецПроцедуры + Процедура ВыгрузитьВерсиюСредствамиTool1CD(Знач КаталогХранилища, Знач ВерсияХранилища, Знач ФайлВерсии, Знач ФайлПараметровКоммита = Неопределено) Экспорт - + ФайлХранилища = ОбъединитьПути(КаталогХранилища, "1cv8ddb.1CD"); Чтение = Новый ЧтениеХранилищаКонфигурации; Если ВерсияХранилища = Неопределено Тогда @@ -140,87 +150,89 @@ Чтение.ВыгрузитьВерсиюКонфигурации(ФайлХранилища, ФайлВерсии, ВерсияХранилища); - Если ЗначениеЗаполнено(ФайлПараметровКоммита) Тогда - СоздатьФайлСПараметрамиКоммита(ФайлХранилища, ВерсияХранилища, ФайлПараметровКоммита); - КонецЕсли; + Если ЗначениеЗаполнено(ФайлПараметровКоммита) Тогда + СоздатьФайлСПараметрамиКоммита(ФайлХранилища, ВерсияХранилища, ФайлПараметровКоммита); + КонецЕсли; КонецПроцедуры Процедура СоздатьФайлСПараметрамиКоммита(Знач ФайлХранилища, Знач ВерсияХранилища, Знач ВыходнойФайл) - ЧтениеБазыДанных = Новый ЧтениеТаблицФайловойБазыДанных; - ЧтениеБазыДанных.ОткрытьФайл(ФайлХранилища); - Попытка - ТаблицаБД = ЧтениеБазыДанных.ПрочитатьТаблицу("VERSIONS"); - Для Каждого Стр Из ТаблицаБД Цикл - Стр.VERNUM = Число(Стр.VERNUM); - КонецЦикла - Исключение - ЧтениеБазыДанных.ЗакрытьФайл(); - ВызватьИсключение; - КонецПопытки; - - ЧтениеБазыДанных.ЗакрытьФайл(); - - Лог.Отладка("Таблица версий содержит " + ТаблицаБД.Количество() + " строк"); - - Если ВерсияХранилища = 0 Тогда - ТаблицаБД.Сортировать("VERNUM Убыв"); - СтрокаВерсии = ТаблицаБД[0]; - Иначе - СтрокаВерсии = ТаблицаБД.Найти(ВерсияХранилища, "VERNUM"); - Если СтрокаВерсии = Неопределено Тогда - ВызватьИсключение СтрШаблон("Заданный номер версии %1 не был найден в таблице БД хранилища", ВерсияХранилища); - КонецЕсли; - КонецЕсли; - - Документ = Новый ТекстовыйДокумент; - Документ.ДобавитьСтроку("НомерВерсииХранилища=" + СтрокаВерсии.VERNUM); - Документ.ДобавитьСтроку("Дата=" + СтрокаВерсии.VERDATE); - Документ.ДобавитьСтроку("Тэг=" + СтрокаВерсии.CODE); - Документ.Записать(ВыходнойФайл); + + ЧтениеБазыДанных = Новый ЧтениеТаблицФайловойБазыДанных; + ЧтениеБазыДанных.ОткрытьФайл(ФайлХранилища); + Попытка + ТаблицаБД = ЧтениеБазыДанных.ПрочитатьТаблицу("VERSIONS"); + Для Каждого Стр Из ТаблицаБД Цикл + Стр.VERNUM = Число(Стр.VERNUM); + КонецЦикла + Исключение + ЧтениеБазыДанных.ЗакрытьФайл(); + ВызватьИсключение; + КонецПопытки; + + ЧтениеБазыДанных.ЗакрытьФайл(); + + Лог.Отладка("Таблица версий содержит " + ТаблицаБД.Количество() + " строк"); + + Если ВерсияХранилища = 0 Тогда + ТаблицаБД.Сортировать("VERNUM Убыв"); + СтрокаВерсии = ТаблицаБД[0]; + Иначе + СтрокаВерсии = ТаблицаБД.Найти(ВерсияХранилища, "VERNUM"); + Если СтрокаВерсии = Неопределено Тогда + ВызватьИсключение СтрШаблон("Заданный номер версии %1 не был найден в таблице БД хранилища", ВерсияХранилища); + КонецЕсли; + КонецЕсли; + + Документ = Новый ТекстовыйДокумент; + Документ.ДобавитьСтроку("НомерВерсииХранилища=" + СтрокаВерсии.VERNUM); + Документ.ДобавитьСтроку("Дата=" + СтрокаВерсии.VERDATE); + Документ.ДобавитьСтроку("Тэг=" + СтрокаВерсии.CODE); + Документ.Записать(ВыходнойФайл); КонецПроцедуры Функция ПрочитатьПараметрыКоммита(Знач ФайлПараметров) Экспорт - - ПараметрыКоммита = Новый Структура; - - ТД = Новый ТекстовыйДокумент; - ТД.Прочитать(ФайлПараметров); - Для Сч = 1 По ТД.КоличествоСтрок() Цикл - - текст = ТД.ПолучитьСтроку(Сч); - Поз = Найти(Текст, "="); - Если Поз = 0 Тогда - Продолжить; - КонецЕсли; - - Ключ = Лев(Текст, Поз-1); - Значение = Сред(Текст, Поз+1); - - Если Ключ = "НомерВерсииХранилища" Тогда - Значение = Число(Значение); - КонецЕсли; - - ПараметрыКоммита.Вставить(Ключ, Значение); - - КонецЦикла; - - Возврат ПараметрыКоммита; + + ПараметрыКоммита = Новый Структура; + + ТД = Новый ТекстовыйДокумент; + ТД.Прочитать(ФайлПараметров); + Для Сч = 1 По ТД.КоличествоСтрок() Цикл + + текст = ТД.ПолучитьСтроку(Сч); + Поз = Найти(Текст, "="); + Если Поз = 0 Тогда + Продолжить; + КонецЕсли; + + Ключ = Лев(Текст, Поз-1); + Значение = Сред(Текст, Поз+1); + + Если Ключ = "НомерВерсииХранилища" Тогда + Значение = Число(Значение); + КонецЕсли; + + ПараметрыКоммита.Вставить(Ключ, Значение); + + КонецЦикла; + + Возврат ПараметрыКоммита; + КонецФункции Функция ПолучитьКонфигуратор(РабочийКаталог = "") - + Если ПустаяСтрока(РабочийКаталог) Тогда РабочийКаталог = ВФ.СоздатьКаталог(); Лог.Отладка("Создан временный каталог: " + РабочийКаталог); КонецЕсли; - + Конфигуратор = Новый УправлениеКонфигуратором(); Конфигуратор.КаталогСборки(РабочийКаталог); Возврат Конфигуратор; - + КонецФункции // ПолучитьКонфигуратор() ////////////////////////////////////////////////////////////////////////////// diff --git "a/src/\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\260\320\236\321\207\320\270\321\201\321\202\320\270\321\202\321\214\320\232\320\260\321\202\320\260\320\273\320\276\320\263.os" "b/src/\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\260\320\236\321\207\320\270\321\201\321\202\320\270\321\202\321\214\320\232\320\260\321\202\320\260\320\273\320\276\320\263.os" index bb68ac5..7428515 100644 --- "a/src/\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\260\320\236\321\207\320\270\321\201\321\202\320\270\321\202\321\214\320\232\320\260\321\202\320\260\320\273\320\276\320\263.os" +++ "b/src/\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\260\320\236\321\207\320\270\321\201\321\202\320\270\321\202\321\214\320\232\320\260\321\202\320\260\320\273\320\276\320\263.os" @@ -5,7 +5,7 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - Команда = Парсер.ОписаниеКоманды(ИмяКоманды, "Очищает рабочий каталог packman"); + Команда = Парсер.ОписаниеКоманды(ИмяКоманды, "Очищает рабочий каталог packman"); Парсер.ДобавитьКоманду(Команда); КонецПроцедуры @@ -16,28 +16,30 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); + Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); ВыполнитьОчистку(Конфигуратор); - + Возврат 0; КонецФункции Процедура ВыполнитьОчистку(Знач Конфигуратор) Экспорт - Лог.Информация("Удаление рабочей базы"); + + Лог.Информация("Удаление рабочей базы"); Конфигуратор.УдалитьВременнуюБазу(); - Попытка - К = Новый Файл(Конфигуратор.КаталогСборки()); + Попытка + К = Новый Файл(Конфигуратор.КаталогСборки()); Если К.Существует() Тогда - УдалитьФайлы(Конфигуратор.КаталогСборки(),"*.txt"); - КонецЕсли; + УдалитьФайлы(Конфигуратор.КаталогСборки(),"*.txt"); + КонецЕсли; Исключение Лог.Предупреждение("Не удалось удалить старые файлы вывода 1С |" + ОписаниеОшибки()); КонецПопытки; Лог.Информация("Рабочий каталог очищен"); + КонецПроцедуры Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); \ No newline at end of file diff --git "a/src/\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\260\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\270\321\202\321\214\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\203\321\216\320\221\320\260\320\267\321\203.os" "b/src/\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\260\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\270\321\202\321\214\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\203\321\216\320\221\320\260\320\267\321\203.os" index acdac9e..325ef6e 100644 --- "a/src/\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\260\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\270\321\202\321\214\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\203\321\216\320\221\320\260\320\267\321\203.os" +++ "b/src/\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\260\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\270\321\202\321\214\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\203\321\216\320\221\320\260\320\267\321\203.os" @@ -6,11 +6,11 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Подключение существующей ИБ как рабочей"); - Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ibconnection", "Строка подключения к БД (/FfilePath или /SserverPath) Например, для файловых баз --ibconnection /FC:\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1 Или для серверных баз --ibconnection /Sservername\basename"); // позиционный - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-db-user", "Пользователь БД"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-db-pwd", "Пароль БД"); - Парсер.ДобавитьКоманду(ОписаниеКоманды); + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Подключение существующей ИБ как рабочей"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ibconnection", "Строка подключения к БД (/FfilePath или /SserverPath) Например, для файловых баз --ibconnection /FC:\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1 Или для серверных баз --ibconnection /Sservername\basename"); // позиционный + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-db-user", "Пользователь БД"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-db-pwd", "Пароль БД"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // Выполняет логику команды @@ -19,25 +19,26 @@ // ПараметрыКоманды - Соответствие ключей командной строки и их значений // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - ПутьКФайлуКонфигурации = ОкружениеСборки.ПолучитьПутьКФайлуКонфигурации(); - СтрокаПодключения = ПараметрыКоманды["ibconnection"]; - ПользовательИБ = ПараметрыКоманды["-db-user"]; - ПарольИБ = ПараметрыКоманды["-db-pwd"]; - - ТекстовыйДокумент = Новый ТекстовыйДокумент; - ТекстовыйДокумент.ДобавитьСтроку("СтрокаПодключения" + "=" + СтрокаПодключения); - Если ПользовательИБ <> Неопределено Тогда - ТекстовыйДокумент.ДобавитьСтроку("ПользовательИБ" + "=" + ПользовательИБ); - Если ПарольИБ <> Неопределено Тогда - ТекстовыйДокумент.ДобавитьСтроку("ПарольИБ" + "=" + ПарольИБ); - КонецЕсли; - КонецЕсли; - - ТекстовыйДокумент.Записать(ПутьКФайлуКонфигурации); - - Лог.Информация("Файл настройки подключения создан. %1", ПутьКФайлуКонфигурации); - Возврат 0; - + + ПутьКФайлуКонфигурации = ОкружениеСборки.ПолучитьПутьКФайлуКонфигурации(); + СтрокаПодключения = ПараметрыКоманды["ibconnection"]; + ПользовательИБ = ПараметрыКоманды["-db-user"]; + ПарольИБ = ПараметрыКоманды["-db-pwd"]; + + ТекстовыйДокумент = Новый ТекстовыйДокумент; + ТекстовыйДокумент.ДобавитьСтроку("СтрокаПодключения" + "=" + СтрокаПодключения); + Если ПользовательИБ <> Неопределено Тогда + ТекстовыйДокумент.ДобавитьСтроку("ПользовательИБ" + "=" + ПользовательИБ); + Если ПарольИБ <> Неопределено Тогда + ТекстовыйДокумент.ДобавитьСтроку("ПарольИБ" + "=" + ПарольИБ); + КонецЕсли; + КонецЕсли; + + ТекстовыйДокумент.Записать(ПутьКФайлуКонфигурации); + + Лог.Информация("Файл настройки подключения создан. %1", ПутьКФайлуКонфигурации); + Возврат 0; + КонецФункции Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); \ No newline at end of file diff --git "a/src/\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\260\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\241\320\270\320\275\321\202\320\260\320\272\321\201\320\270\321\201.os" "b/src/\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\260\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\241\320\270\320\275\321\202\320\260\320\272\321\201\320\270\321\201.os" index 7e79340..953b2db 100644 --- "a/src/\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\260\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\241\320\270\320\275\321\202\320\260\320\272\321\201\320\270\321\201.os" +++ "b/src/\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\260\320\237\321\200\320\276\320\262\320\265\321\200\320\270\321\202\321\214\320\241\320\270\320\275\321\202\320\260\320\272\321\201\320\270\321\201.os" @@ -3,27 +3,27 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - - ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить проверку синтаксиса"); - - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы"); - - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThinClient", "Тонкий клиент"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-WebClient", "Веб-клиент"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-Server", "Сервер"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ExternalConnection", "Внешнее соединение"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientOrdinaryApplication", "Толстый клиент об. прил."); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientManagedApplication", "Толстый клиент упр. прил"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientServerManagedApplication", "Толстый клиент упр. прил. клиент-сервер"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientServerOrdinaryApplication", "Толстый клиент об. прил. клиент-сервер"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ExternalConnectionServer", "Внешнее соединение клиент-сервер"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ConfigLogIntegrity", "Логическая целостность конфигурации"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-IncorrectReferences", "Поиск некорректных ссылок"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-DistributiveModules", "Поставка без исходных текстов"); - Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-EmptyHandlers", "Поиск пустых обработчиков"); - - Парсер.ДобавитьКоманду(ОписаниеКоманды); - + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить проверку синтаксиса"); + + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы"); + + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThinClient", "Тонкий клиент"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-WebClient", "Веб-клиент"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-Server", "Сервер"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ExternalConnection", "Внешнее соединение"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientOrdinaryApplication", "Толстый клиент об. прил."); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientManagedApplication", "Толстый клиент упр. прил"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientServerManagedApplication", "Толстый клиент упр. прил. клиент-сервер"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ThickClientServerOrdinaryApplication", "Толстый клиент об. прил. клиент-сервер"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ExternalConnectionServer", "Внешнее соединение клиент-сервер"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-ConfigLogIntegrity", "Логическая целостность конфигурации"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-IncorrectReferences", "Поиск некорректных ссылок"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-DistributiveModules", "Поставка без исходных текстов"); + Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-EmptyHandlers", "Поиск пустых обработчиков"); + + Парсер.ДобавитьКоманду(ОписаниеКоманды); + КонецПроцедуры // Выполняет логику команды @@ -32,85 +32,85 @@ // ПараметрыКоманды - Соответствие ключей командной строки и их значений // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - - Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); - Версия1С = ПараметрыКоманды["-v8version"]; - Если ЗначениеЗаполнено(Версия1С) Тогда + + Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); + Версия1С = ПараметрыКоманды["-v8version"]; + Если ЗначениеЗаполнено(Версия1С) Тогда Конфигуратор.ИспользоватьВерсиюПлатформы(Версия1С); - КонецЕсли; - - ДатаНачала = ТекущаяДата(); - Успешно = Истина; - Попытка - ПараметрыКоманды.Удалить("-v8version"); - Конфигуратор.ВыполнитьРасширеннуюПроверкуКонфигуратора(ПараметрыКоманды); - Исключение - Успешно = Ложь; - КонецПопытки; - - ЛогПроверкиИзКонфигуратора = Конфигуратор.ВыводКоманды(); - ВывестиОтчетПроверкиКонфигурацииВФорматеJUnitXML(ЛогПроверкиИзКонфигуратора, Успешно, ДатаНачала); - - Если Не Успешно Тогда - ВызватьИсключение "Не пройден синтаксический контроль! - |" + ЛогПроверкиИзКонфигуратора; - КонецЕсли; - - Возврат 0; + КонецЕсли; + + ДатаНачала = ТекущаяДата(); + Успешно = Истина; + Попытка + ПараметрыКоманды.Удалить("-v8version"); + Конфигуратор.ВыполнитьРасширеннуюПроверкуКонфигуратора(ПараметрыКоманды); + Исключение + Успешно = Ложь; + КонецПопытки; + + ЛогПроверкиИзКонфигуратора = Конфигуратор.ВыводКоманды(); + ВывестиОтчетПроверкиКонфигурацииВФорматеJUnitXML(ЛогПроверкиИзКонфигуратора, Успешно, ДатаНачала); + + Если Не Успешно Тогда + ВызватьИсключение "Не пройден синтаксический контроль! + |" + ЛогПроверкиИзКонфигуратора; + КонецЕсли; + + Возврат 0; КонецФункции Функция ВывестиОтчетПроверкиКонфигурацииВФорматеJUnitXML(ЛогПроверкиИзКонфигуратора, НетОшибок, ДатаНачала) Экспорт - - ЗаписьXML = Новый ЗаписьXML; - ЗаписьXML.УстановитьСтроку("UTF-8"); - ЗаписьXML.ЗаписатьОбъявлениеXML(); - - ВсегоТестов = 1; - КоличествоОшибок = ?(НетОшибок, 0, ВсегоТестов); - ВремяВыполнения = ТекущаяДата() - ДатаНачала; - - ЗаписьXML.ЗаписатьНачалоЭлемента("testsuites"); - ЗаписьXML.ЗаписатьАтрибут("tests", XMLСтрока(ВсегоТестов)); - ЗаписьXML.ЗаписатьАтрибут("name", XMLСтрока("1CUNIT")); //TODO: указывать путь к набору тестов. - ЗаписьXML.ЗаписатьАтрибут("time", XMLСтрока(ВремяВыполнения)); - ЗаписьXML.ЗаписатьАтрибут("failures", XMLСтрока(КоличествоОшибок)); - - ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite"); - ЗаписьXML.ЗаписатьАтрибут("name", "Синтаксическая проверка конфигурации"); - ЗаписьXML.ЗаписатьНачалоЭлемента("properties"); - ЗаписьXML.ЗаписатьКонецЭлемента(); - - ЗаписьXML.ЗаписатьНачалоЭлемента("testcase"); - ЗаписьXML.ЗаписатьАтрибут("classname", "Тест"); - ЗаписьXML.ЗаписатьАтрибут("name", "Тест"); - ЗаписьXML.ЗаписатьАтрибут("time", XMLСтрока(ВремяВыполнения)); - - Если НетОшибок Тогда - ЗаписьXML.ЗаписатьАтрибут("status", "passed"); - Иначе - ЗаписьXML.ЗаписатьАтрибут("status", "failure"); - ЗаписьXML.ЗаписатьНачалоЭлемента("failure"); - XMLОписание = XMLСтрока(ЛогПроверкиИзКонфигуратора); - ЗаписьXML.ЗаписатьАтрибут("message", XMLОписание); - - ЗаписьXML.ЗаписатьКонецЭлемента(); - КонецЕсли; - - ЗаписьXML.ЗаписатьКонецЭлемента(); //testcase - - ЗаписьXML.ЗаписатьКонецЭлемента(); //testsuites - - СтрокаХМЛ = ЗаписьXML.Закрыть(); - - ПутьОтчетаВФорматеJUnitxml = ОбъединитьПути(ОкружениеСборки.РабочийКаталог(), "check-syntax.xml"); - - ЗаписьXML = Новый ЗаписьXML; - ЗаписьXML.ОткрытьФайл(ПутьОтчетаВФорматеJUnitxml); - ЗаписьXML.ЗаписатьБезОбработки(СтрокаХМЛ);// таким образом файл будет записан всего один раз, и не будет проблем с обработкой на билд-сервере TeamCity - ЗаписьXML.Закрыть(); - Сообщить("Путь к лог-файлу проверки "+ПутьОтчетаВФорматеJUnitxml); - - Сообщить(СтрокаХМЛ); - + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.УстановитьСтроку("UTF-8"); + ЗаписьXML.ЗаписатьОбъявлениеXML(); + + ВсегоТестов = 1; + КоличествоОшибок = ?(НетОшибок, 0, ВсегоТестов); + ВремяВыполнения = ТекущаяДата() - ДатаНачала; + + ЗаписьXML.ЗаписатьНачалоЭлемента("testsuites"); + ЗаписьXML.ЗаписатьАтрибут("tests", XMLСтрока(ВсегоТестов)); + ЗаписьXML.ЗаписатьАтрибут("name", XMLСтрока("1CUNIT")); //TODO: указывать путь к набору тестов. + ЗаписьXML.ЗаписатьАтрибут("time", XMLСтрока(ВремяВыполнения)); + ЗаписьXML.ЗаписатьАтрибут("failures", XMLСтрока(КоличествоОшибок)); + + ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite"); + ЗаписьXML.ЗаписатьАтрибут("name", "Синтаксическая проверка конфигурации"); + ЗаписьXML.ЗаписатьНачалоЭлемента("properties"); + ЗаписьXML.ЗаписатьКонецЭлемента(); + + ЗаписьXML.ЗаписатьНачалоЭлемента("testcase"); + ЗаписьXML.ЗаписатьАтрибут("classname", "Тест"); + ЗаписьXML.ЗаписатьАтрибут("name", "Тест"); + ЗаписьXML.ЗаписатьАтрибут("time", XMLСтрока(ВремяВыполнения)); + + Если НетОшибок Тогда + ЗаписьXML.ЗаписатьАтрибут("status", "passed"); + Иначе + ЗаписьXML.ЗаписатьАтрибут("status", "failure"); + ЗаписьXML.ЗаписатьНачалоЭлемента("failure"); + XMLОписание = XMLСтрока(ЛогПроверкиИзКонфигуратора); + ЗаписьXML.ЗаписатьАтрибут("message", XMLОписание); + + ЗаписьXML.ЗаписатьКонецЭлемента(); + КонецЕсли; + + ЗаписьXML.ЗаписатьКонецЭлемента(); //testcase + + ЗаписьXML.ЗаписатьКонецЭлемента(); //testsuites + + СтрокаХМЛ = ЗаписьXML.Закрыть(); + + ПутьОтчетаВФорматеJUnitxml = ОбъединитьПути(ОкружениеСборки.РабочийКаталог(), "check-syntax.xml"); + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.ОткрытьФайл(ПутьОтчетаВФорматеJUnitxml); + ЗаписьXML.ЗаписатьБезОбработки(СтрокаХМЛ);// таким образом файл будет записан всего один раз, и не будет проблем с обработкой на билд-сервере TeamCity + ЗаписьXML.Закрыть(); + Сообщить("Путь к лог-файлу проверки "+ПутьОтчетаВФорматеJUnitxml); + + Сообщить(СтрокаХМЛ); + КонецФункции \ No newline at end of file diff --git "a/src/\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\260\320\241\320\275\321\217\321\202\321\214\320\241\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.os" "b/src/\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\260\320\241\320\275\321\217\321\202\321\214\320\241\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.os" index 068c865..ed50837 100644 --- "a/src/\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\260\320\241\320\275\321\217\321\202\321\214\320\241\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.os" +++ "b/src/\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\260\320\241\320\275\321\217\321\202\321\214\320\241\320\237\320\276\320\264\320\264\320\265\321\200\320\266\320\272\320\270.os" @@ -3,9 +3,9 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Снятие исходной конфигурации с поддержки"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы 1С (опционально)"); - Парсер.ДобавитьКоманду(ОписаниеКоманды); + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Снятие исходной конфигурации с поддержки"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы 1С (опционально)"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры // Выполняет логику команды @@ -14,21 +14,21 @@ // ПараметрыКоманды - Соответствие ключей командной строки и их значений // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - - Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); - Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); - Если ЗначениеЗаполнено(ПараметрыКоманды["-v8version"]) Тогда - ОкружениеСборки.ПрименитьВерсию1С(Конфигуратор, ПараметрыКоманды["-v8version"]); - КонецЕсли; - ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); - ПараметрыЗапуска.Добавить("/ManageCfgSupport -disableSupport"); + Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); + Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); + Если ЗначениеЗаполнено(ПараметрыКоманды["-v8version"]) Тогда + ОкружениеСборки.ПрименитьВерсию1С(Конфигуратор, ПараметрыКоманды["-v8version"]); + КонецЕсли; - Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); - Лог.Отладка(Конфигуратор.ВыводКоманды()); + ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); + ПараметрыЗапуска.Добавить("/ManageCfgSupport -disableSupport"); - Конфигуратор.ОбновитьКонфигурациюБазыДанных(); + Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); + Лог.Отладка(Конфигуратор.ВыводКоманды()); + + Конфигуратор.ОбновитьКонфигурациюБазыДанных(); + + Возврат 0; - Возврат 0; - КонецФункции diff --git "a/src/\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\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\321\213\321\205\321\204\320\260\320\271\320\273\320\276\320\262.os" "b/src/\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\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\321\213\321\205\321\204\320\260\320\271\320\273\320\276\320\262.os" index bc73f5b..06b5a62 100644 --- "a/src/\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\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\321\213\321\205\321\204\320\260\320\271\320\273\320\276\320\262.os" +++ "b/src/\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\260\320\241\320\276\320\261\321\200\320\260\321\202\321\214\320\230\320\267\320\230\321\201\321\205\320\276\320\264\320\275\321\213\321\205\321\204\320\260\320\271\320\273\320\276\320\262.os" @@ -6,11 +6,11 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - - ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Сборка cf из исходников"); - Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "src", "Каталог исходников"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы для загрузки исходников"); - Парсер.ДобавитьКоманду(ОписаниеКоманды); + + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Сборка cf из исходников"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "src", "Каталог исходников"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы для загрузки исходников"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры @@ -20,37 +20,38 @@ // ПараметрыКоманды - Соответствие ключей командной строки и их значений // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - - Каталог = ПараметрыКоманды["src"]; - Версия = ПараметрыКоманды["-v8version"]; - СобратьИзИсходниковТекущуюКонфигурацию(Каталог, Версия); + Каталог = ПараметрыКоманды["src"]; + Версия = ПараметрыКоманды["-v8version"]; + + СобратьИзИсходниковТекущуюКонфигурацию(Каталог, Версия); + + Возврат 0; - Возврат 0; КонецФункции Процедура СобратьИзИсходниковТекущуюКонфигурацию(Знач ВходнойКаталог, Знач ВерсияПлатформы = "") - - КаталогВыгрузки = Новый Файл(ВходнойКаталог); - Если КаталогВыгрузки.Существует() = Ложь ИЛИ КаталогВыгрузки.ЭтоФайл() Тогда - ВызватьИсключение СтрШаблон("Каталог исходников %1 не найден или является файлом", КаталогВыгрузки.ПолноеИмя); - КонецЕсли; - - Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); - - Если Не ПустаяСтрока(ВерсияПлатформы) Тогда - Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы); - КонецЕсли; - - ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); - ПараметрыЗапуска.Добавить("/Visible"); - ПараметрыЗапуска.Добавить(СтрШаблон("/LoadConfigFromFiles ""%1""", ВходнойКаталог)); - Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); - Лог.Информация("Загрузка исходников выполнена. %1", Конфигуратор.ВыводКоманды()); - Конфигуратор.ОбновитьКонфигурациюБазыДанных(); - Лог.Информация(Конфигуратор.ВыводКоманды() + " - |Конфигурация базы данных обновлена"); - + + КаталогВыгрузки = Новый Файл(ВходнойКаталог); + Если КаталогВыгрузки.Существует() = Ложь ИЛИ КаталогВыгрузки.ЭтоФайл() Тогда + ВызватьИсключение СтрШаблон("Каталог исходников %1 не найден или является файлом", КаталогВыгрузки.ПолноеИмя); + КонецЕсли; + + Конфигуратор = ОкружениеСборки.ПолучитьКонфигуратор(); + + Если Не ПустаяСтрока(ВерсияПлатформы) Тогда + Конфигуратор.ИспользоватьВерсиюПлатформы(ВерсияПлатформы); + КонецЕсли; + + ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска(); + ПараметрыЗапуска.Добавить("/Visible"); + ПараметрыЗапуска.Добавить(СтрШаблон("/LoadConfigFromFiles ""%1""", ВходнойКаталог)); + Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска); + Лог.Информация("Загрузка исходников выполнена. %1", Конфигуратор.ВыводКоманды()); + Конфигуратор.ОбновитьКонфигурациюБазыДанных(); + Лог.Информация(Конфигуратор.ВыводКоманды() + " + |Конфигурация базы данных обновлена"); + КонецПроцедуры Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы()); diff --git "a/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" "b/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" index c9f9ff9..9d93e8d 100644 --- "a/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" +++ "b/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262.os" @@ -43,7 +43,7 @@ Параметры.СобиратьФайлыПоставки, Параметры.ВариантПоставки, Параметры.ВыходнойКаталог, - Параметры.ФайлыСвойств); + Параметры.ФайлыСвойств); Возврат 0; @@ -82,14 +82,14 @@ КонецЕсли; ПутьКПлатформе = УправлениеКонфигуратором.ПутьКПлатформе1С(); - УправлениеКонфигуратором.ПутьКПлатформе1С(УправлениеКонфигуратором.ПутьКТонкомуКлиенту1С()); + УправлениеКонфигуратором.ПутьКПлатформе1С(УправлениеКонфигуратором.ПутьКТонкомуКлиенту1С()); Попытка - УправлениеКонфигуратором.ЗапуститьВРежимеПредприятия("""" + ФайлДанных.ПолноеИмя + """", Истина, "/Execute""" + ОбработкаСборщик + """"); - Исключение - УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКПлатформе); - ВызватьИсключение; - КонецПопытки; - УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКПлатформе); + УправлениеКонфигуратором.ЗапуститьВРежимеПредприятия("""" + ФайлДанных.ПолноеИмя + """", Истина, "/Execute""" + ОбработкаСборщик + """"); + Исключение + УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКПлатформе); + ВызватьИсключение; + КонецПопытки; + УправлениеКонфигуратором.ПутьКПлатформе1С(ПутьКПлатформе); Возврат ПрочитатьИнформациюОМетаданных(ФайлДанных.ПолноеИмя, ФайлыСвойств); @@ -118,38 +118,38 @@ Функция ПрочитатьИнформациюОМетаданных(Знач ИмяФайла, Знач ФайлыСвойств = Неопределено) Экспорт - Если ЗначениеЗаполнено(ФайлыСвойств) Тогда - Запись = Новый ЗаписьТекста(ИмяФайла,,,Истина); - Попытка - Для Каждого ФайлДополнения Из ФайлыСвойств Цикл - ДополнитьФайлСвойствМетаданных(Запись, ФайлДополнения); - КонецЦикла; - Исключение - Запись.Закрыть(); - ВызватьИсключение; - КонецПопытки; - - Запись.Закрыть(); - КонецЕсли; + Если ЗначениеЗаполнено(ФайлыСвойств) Тогда + Запись = Новый ЗаписьТекста(ИмяФайла,,,Истина); + Попытка + Для Каждого ФайлДополнения Из ФайлыСвойств Цикл + ДополнитьФайлСвойствМетаданных(Запись, ФайлДополнения); + КонецЦикла; + Исключение + Запись.Закрыть(); + ВызватьИсключение; + КонецПопытки; + + Запись.Закрыть(); + КонецЕсли; - Возврат ОкружениеСборки.ПрочитатьИнформациюОМетаданных(ИмяФайла); + Возврат ОкружениеСборки.ПрочитатьИнформациюОМетаданных(ИмяФайла); КонецФункции // ПрочитатьИнформациюОМетаданных() Процедура ДополнитьФайлСвойствМетаданных(Знач Запись, Знач ФайлДополнения) - ФайлПроверка = Новый Файл(ФайлДополнения); - Если ФайлПроверка.Существует() Тогда - // дополним исходный файл - Чтение = Новый ЧтениеТекста(ФайлДополнения); - Пока Истина Цикл - Стр = Чтение.ПрочитатьСтроку(); - Если Стр = Неопределено Тогда - Прервать; - КонецЕсли; - Запись.ЗаписатьСтроку(Стр); - КонецЦикла; - Чтение.Закрыть(); - КонецЕсли; + ФайлПроверка = Новый Файл(ФайлДополнения); + Если ФайлПроверка.Существует() Тогда + // дополним исходный файл + Чтение = Новый ЧтениеТекста(ФайлДополнения); + Пока Истина Цикл + Стр = Чтение.ПрочитатьСтроку(); + Если Стр = Неопределено Тогда + Прервать; + КонецЕсли; + Запись.ЗаписатьСтроку(Стр); + КонецЦикла; + Чтение.Закрыть(); + КонецЕсли; КонецПроцедуры Функция СоздатьДистрибутивПоМанифесту( @@ -161,7 +161,7 @@ Знач ВариантПоставки, Знач ВыходнойКаталог) - ИмяКаталогаШаблонаВерсии = ОкружениеСборки.ОпределитьСтандартноеИмяКаталогаШаблона(ИнформацияОМетаданных); + ИмяКаталогаШаблонаВерсии = ОкружениеСборки.ОпределитьСтандартноеИмяКаталогаШаблона(ИнформацияОМетаданных); Сборщик = Новый СборщикДистрибутива; Сборщик.ФайлМанифеста = ФайлМанифеста; @@ -174,8 +174,6 @@ КонецФункции // СоздатьДистрибутивПоМанифесту(Знач УправлениеКонфигуратором, Знач ПараметрыКоманды) - - Функция РазобратьПараметры(Знач ПараметрыКоманды) Экспорт Результат = Новый Структура; @@ -189,8 +187,8 @@ Результат.Вставить("СобиратьФайлыПоставки", ПараметрыКоманды["-files"]); Результат.Вставить("ВариантПоставки", ПараметрыКоманды["-option"]); Результат.Вставить("ВыходнойКаталог", ПараметрыКоманды["-out"]); - Результат.Вставить("ФайлыСвойств", ПараметрыКоманды["-prop-files"]); - Результат.Вставить("Версия1С", ПараметрыКоманды["-v8version"]); + Результат.Вставить("ФайлыСвойств", ПараметрыКоманды["-prop-files"]); + Результат.Вставить("Версия1С", ПараметрыКоманды["-v8version"]); Возврат Результат; diff --git "a/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" "b/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" index d9cff50..e237208 100644 --- "a/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" +++ "b/src/\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\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\321\213\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" @@ -5,13 +5,13 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - - ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Создание файлов поставки (cf и cfu)"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-cfu-basedir", "Каталог предыдущих версий для создания CFU (опционально)"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-update-from", "Перечень версий, через запятую, включаемых в обновление (опционально)"); - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы 1С"); - Парсер.ДобавитьКоманду(ОписаниеКоманды); + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Создание файлов поставки (cf и cfu)"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-cfu-basedir", "Каталог предыдущих версий для создания CFU (опционально)"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-update-from", "Перечень версий, через запятую, включаемых в обновление (опционально)"); + Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-v8version", "Версия платформы 1С"); + + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры @@ -22,103 +22,103 @@ // Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - РазобранныеПараметры = РазобратьПараметры(ПараметрыКоманды); - СоздатьФайлыКонфигурацииПоставщика( - ОкружениеСборки.ПолучитьКонфигуратор(), - РазобранныеПараметры.КаталогВерсий, - РазобранныеПараметры.ПредыдущиеВерсии, - РазобранныеПараметры.Версия1С); + РазобранныеПараметры = РазобратьПараметры(ПараметрыКоманды); + СоздатьФайлыКонфигурацииПоставщика( + ОкружениеСборки.ПолучитьКонфигуратор(), + РазобранныеПараметры.КаталогВерсий, + РазобранныеПараметры.ПредыдущиеВерсии, + РазобранныеПараметры.Версия1С); - Возврат 0; + Возврат 0; КонецФункции Функция СоздатьФайлыКонфигурацииПоставщика(Знач УправлениеКонфигуратором, Знач КаталогВерсий, Знач ПредыдущиеВерсии, Знач Версия1С = Неопределено) Экспорт - ИмяФайлаПоставки = ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), "1cv8.cf"); - Параметры = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); - Параметры.Добавить("/CreateDistributionFiles"); - Параметры.Добавить(СтрШаблон("-cffile ""%1""", ИмяФайлаПоставки)); - - ФайлыПредыдущихВерсий = НайтиФайлыПредыдущихВерсий(КаталогВерсий, ПредыдущиеВерсии); - Если ФайлыПредыдущихВерсий <> Неопределено Тогда - ИмяФайлаОбновления = ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), "1cv8.cfu"); - Параметры.Добавить(СтрШаблон("-cfufile ""%1""", ИмяФайлаОбновления)); - - Для Каждого ФайлПредыдущейВерсии Из ФайлыПредыдущихВерсий Цикл - - Лог.Информация("Добавляю обновление из файла: %1", ФайлПредыдущейВерсии.ПолноеИмя); - Параметры.Добавить(СтрШаблон("-f ""%1""", ФайлПредыдущейВерсии.ПолноеИмя)); - - КонецЦикла; - - КонецЕсли; - - ОкружениеСборки.ПрименитьВерсию1С(УправлениеКонфигуратором, Версия1С); - УправлениеКонфигуратором.ВыполнитьКоманду(Параметры); - Лог.Отладка(УправлениеКонфигуратором.ВыводКоманды()); - - Возврат Новый Структура("ИмяФайлаПоставки, ИмяФайлаОбновления", ИмяФайлаПоставки, ИмяФайлаОбновления); + ИмяФайлаПоставки = ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), "1cv8.cf"); + Параметры = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); + Параметры.Добавить("/CreateDistributionFiles"); + Параметры.Добавить(СтрШаблон("-cffile ""%1""", ИмяФайлаПоставки)); + + ФайлыПредыдущихВерсий = НайтиФайлыПредыдущихВерсий(КаталогВерсий, ПредыдущиеВерсии); + Если ФайлыПредыдущихВерсий <> Неопределено Тогда + ИмяФайлаОбновления = ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), "1cv8.cfu"); + Параметры.Добавить(СтрШаблон("-cfufile ""%1""", ИмяФайлаОбновления)); + + Для Каждого ФайлПредыдущейВерсии Из ФайлыПредыдущихВерсий Цикл + + Лог.Информация("Добавляю обновление из файла: %1", ФайлПредыдущейВерсии.ПолноеИмя); + Параметры.Добавить(СтрШаблон("-f ""%1""", ФайлПредыдущейВерсии.ПолноеИмя)); + + КонецЦикла; + + КонецЕсли; + + ОкружениеСборки.ПрименитьВерсию1С(УправлениеКонфигуратором, Версия1С); + УправлениеКонфигуратором.ВыполнитьКоманду(Параметры); + Лог.Отладка(УправлениеКонфигуратором.ВыводКоманды()); + + Возврат Новый Структура("ИмяФайлаПоставки, ИмяФайлаОбновления", ИмяФайлаПоставки, ИмяФайлаОбновления); КонецФункции // СоздатьФайлыКонфигурацииПоставщика() Функция НайтиФайлыПредыдущихВерсий(Знач КаталогПредыдущихВерсий, Знач ВерсииОбновления) - - Если КаталогПредыдущихВерсий = Неопределено Тогда - - Возврат Неопределено; - - КонецЕсли; - - Каталог = Новый Файл(КаталогПредыдущихВерсий); - Если Не Каталог.Существует() ИЛИ Каталог.ЭтоФайл() Тогда - - Возврат Неопределено; - - КонецЕсли; - - ФайлыКонфигураций = Новый Массив; - - Для Каждого Версия Из ВерсииОбновления Цикл - - КаталогВерсии = Новый Файл(ОбъединитьПути(КаталогПредыдущихВерсий, Версия)); - Если Не КаталогВерсии.Существует() Тогда - - Текст = СтрШаблон("Каталог версии %1 не найден", КаталогВерсии.ПолноеИмя); - Лог.Ошибка(Текст); - ВызватьИсключение Текст; - - КонецЕсли; - - ФайлыКонфигурацийВерсии = НайтиФайлы(КаталогВерсии.ПолноеИмя, "*.cf", Истина); - Для Каждого ФайлВерсии Из ФайлыКонфигурацийВерсии Цикл - - ФайлыКонфигураций.Добавить(ФайлВерсии); - - КонецЦикла; - - КонецЦикла; - - Если ФайлыКонфигураций.Количество() Тогда - - Возврат ФайлыКонфигураций; - - КонецЕсли; - - Возврат Неопределено; - + + Если КаталогПредыдущихВерсий = Неопределено Тогда + + Возврат Неопределено; + + КонецЕсли; + + Каталог = Новый Файл(КаталогПредыдущихВерсий); + Если Не Каталог.Существует() ИЛИ Каталог.ЭтоФайл() Тогда + + Возврат Неопределено; + + КонецЕсли; + + ФайлыКонфигураций = Новый Массив; + + Для Каждого Версия Из ВерсииОбновления Цикл + + КаталогВерсии = Новый Файл(ОбъединитьПути(КаталогПредыдущихВерсий, Версия)); + Если Не КаталогВерсии.Существует() Тогда + + Текст = СтрШаблон("Каталог версии %1 не найден", КаталогВерсии.ПолноеИмя); + Лог.Ошибка(Текст); + ВызватьИсключение Текст; + + КонецЕсли; + + ФайлыКонфигурацийВерсии = НайтиФайлы(КаталогВерсии.ПолноеИмя, "*.cf", Истина); + Для Каждого ФайлВерсии Из ФайлыКонфигурацийВерсии Цикл + + ФайлыКонфигураций.Добавить(ФайлВерсии); + + КонецЦикла; + + КонецЦикла; + + Если ФайлыКонфигураций.Количество() Тогда + + Возврат ФайлыКонфигураций; + + КонецЕсли; + + Возврат Неопределено; + КонецФункции Функция РазобратьПараметры(Знач ПараметрыКоманды) Экспорт - МассивВерсий = СтрРазделить(Строка(ПараметрыКоманды["-update-from"]), ",", Истина); - - Результат = Новый Структура; - Результат.Вставить("КаталогВерсий", ПараметрыКоманды["-cfu-basedir"]); - Результат.Вставить("ПредыдущиеВерсии", МассивВерсий); - Результат.Вставить("Версия1С", ПараметрыКоманды["-v8version"]); + МассивВерсий = СтрРазделить(Строка(ПараметрыКоманды["-update-from"]), ",", Истина); + + Результат = Новый Структура; + Результат.Вставить("КаталогВерсий", ПараметрыКоманды["-cfu-basedir"]); + Результат.Вставить("ПредыдущиеВерсии", МассивВерсий); + Результат.Вставить("Версия1С", ПараметрыКоманды["-v8version"]); - Возврат Результат; + Возврат Результат; КонецФункции diff --git "a/src/\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\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" "b/src/\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\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" index 2f3eb72..a73cdaf 100644 --- "a/src/\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\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" +++ "b/src/\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\260\320\241\320\277\321\200\320\260\320\262\320\272\320\260\320\237\320\276\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\260\320\274.os" @@ -3,39 +3,39 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Вывод справки по параметрам"); - Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "Команда"); - Парсер.ДобавитьКоманду(ОписаниеКоманды); + ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Вывод справки по параметрам"); + Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "Команда"); + Парсер.ДобавитьКоманду(ОписаниеКоманды); КонецПроцедуры Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт - - Парсер = Новый ПарсерАргументовКоманднойСтроки; - МенеджерКомандПриложения.ЗарегистрироватьКоманды(Парсер); + Парсер = Новый ПарсерАргументовКоманднойСтроки; - Сообщить("Утилита vanessa-packman выполняет сборку штатного тиражного дистрибутива системы 1С:Предприятие"); - Сообщить("В качестве рабочего каталога шагов сборки используется текущий каталог,"); - Сообщить("либо каталог, указанный в переменной " + ОкружениеСборки.ИмяПеременнойОкруженияКаталогСборки()); + МенеджерКомандПриложения.ЗарегистрироватьКоманды(Парсер); - Если ПараметрыКоманды["Команда"] = Неопределено Тогда - ПоказатьВозможныеКоманды(Парсер); - Иначе - ПоказатьСправкуПоКоманде(Парсер, ПараметрыКоманды["Команда"]); - КонецЕсли; + Сообщить("Утилита vanessa-packman выполняет сборку штатного тиражного дистрибутива системы 1С:Предприятие"); + Сообщить("В качестве рабочего каталога шагов сборки используется текущий каталог,"); + Сообщить("либо каталог, указанный в переменной " + ОкружениеСборки.ИмяПеременнойОкруженияКаталогСборки()); - Возврат 0; + Если ПараметрыКоманды["Команда"] = Неопределено Тогда + ПоказатьВозможныеКоманды(Парсер); + Иначе + ПоказатьСправкуПоКоманде(Парсер, ПараметрыКоманды["Команда"]); + КонецЕсли; + + Возврат 0; КонецФункции Процедура ПоказатьВозможныеКоманды(Знач Парсер) - - Парсер.ВывестиСправкуПоКомандам(); + + Парсер.ВывестиСправкуПоКомандам(); КонецПроцедуры Процедура ПоказатьСправкуПоКоманде(Знач Парсер, Знач ИмяКоманды) - Парсер.ВывестиСправкуПоКоманде(ИмяКоманды); + Парсер.ВывестиСправкуПоКоманде(ИмяКоманды); КонецПроцедуры diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" index 621f475..6fe45b3 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\261\320\276\321\200\321\211\320\270\320\272\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" @@ -8,80 +8,80 @@ Перем Лог; Функция Собрать(Знач УправлениеКонфигуратором, Знач ВерсияМетаданных, Знач ИмяКаталогаШаблонаВерсии) Экспорт - + Манифест = ПолучитьМанифестСборки(УправлениеКонфигуратором.КаталогСборки()); - Лог.Отладка("Использую шаблон манифеста: " + Манифест); + Лог.Отладка("Использую шаблон манифеста: " + Манифест); УстановитьНомерСборкиВМанифесте(Манифест, ВерсияМетаданных, ИмяКаталогаШаблонаВерсии); - + Если ПустаяСтрока(ВыходнойКаталог) Тогда - ВыходнойКаталогОбъект = Новый Файл(ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), ОкружениеСборки.ИмяКаталогаФормированияДистрибутива())); - Иначе - ВыходнойКаталогОбъект = Новый Файл(ВыходнойКаталог); - КонецЕсли; - - Если Не ВыходнойКаталогОбъект.Существует() Тогда - СоздатьКаталог(ВыходнойКаталогОбъект.ПолноеИмя); - ИначеЕсли ВыходнойКаталогОбъект.ЭтоКаталог() Тогда - УдалитьФайлы(ВыходнойКаталогОбъект.ПолноеИмя, "*.*"); - Иначе - УдалитьФайлы(Манифест); - ВызватьИсключение "Каталог <" +ВыходнойКаталогОбъект.ПолноеИмя+ "> не является каталогом"; - КонецЕсли; - - // внешние файлы релиза - УстановитьПеременнуюСреды("V8BuildRoot", УправлениеКонфигуратором.КаталогСборки()); - + ВыходнойКаталогОбъект = Новый Файл(ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), ОкружениеСборки.ИмяКаталогаФормированияДистрибутива())); + Иначе + ВыходнойКаталогОбъект = Новый Файл(ВыходнойКаталог); + КонецЕсли; + + Если Не ВыходнойКаталогОбъект.Существует() Тогда + СоздатьКаталог(ВыходнойКаталогОбъект.ПолноеИмя); + ИначеЕсли ВыходнойКаталогОбъект.ЭтоКаталог() Тогда + УдалитьФайлы(ВыходнойКаталогОбъект.ПолноеИмя, "*.*"); + Иначе + УдалитьФайлы(Манифест); + ВызватьИсключение "Каталог <" +ВыходнойКаталогОбъект.ПолноеИмя+ "> не является каталогом"; + КонецЕсли; + + // внешние файлы релиза + УстановитьПеременнуюСреды("V8BuildRoot", УправлениеКонфигуратором.КаталогСборки()); + Параметры = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); - Параметры.Добавить("/CreateDistributive """ + ВыходнойКаталогОбъект.ПолноеИмя + """"); - Параметры.Добавить("-File """ + Манифест + """"); - - Если Не ПустаяСтрока(ВариантПоставки) Тогда - Параметры.Добавить("-Option """ + ВариантПоставки + """"); - КонецЕсли; - - Если СоздаватьФайлыПоставки Тогда + Параметры.Добавить("/CreateDistributive """ + ВыходнойКаталогОбъект.ПолноеИмя + """"); + Параметры.Добавить("-File """ + Манифест + """"); + + Если Не ПустаяСтрока(ВариантПоставки) Тогда + Параметры.Добавить("-Option """ + ВариантПоставки + """"); + КонецЕсли; + + Если СоздаватьФайлыПоставки Тогда Параметры.Добавить("-MakeFiles"); ИначеЕсли СоздаватьИнсталлятор Тогда Параметры.Добавить("-MakeInstall"); КонецЕсли; - - Попытка - УправлениеКонфигуратором.ВыполнитьКоманду(Параметры); - Лог.Информация(УправлениеКонфигуратором.ВыводКоманды()); - Исключение - УдалитьФайлы(Манифест); - ВызватьИсключение; - КонецПопытки; - - Возврат ВыходнойКаталогОбъект.ПолноеИмя; - + + Попытка + УправлениеКонфигуратором.ВыполнитьКоманду(Параметры); + Лог.Информация(УправлениеКонфигуратором.ВыводКоманды()); + Исключение + УдалитьФайлы(Манифест); + ВызватьИсключение; + КонецПопытки; + + Возврат ВыходнойКаталогОбъект.ПолноеИмя; + КонецФункции // Собрать() Функция ПолучитьМанифестСборки(Знач КаталогСборки) - ИсходныйМанифест = ФайлМанифеста; - РабочийМанифест = ПолучитьИмяВременногоФайла("package.edf"); - КопироватьФайл(ИсходныйМанифест, РабочийМанифест); - - Возврат РабочийМанифест; - + ИсходныйМанифест = ФайлМанифеста; + РабочийМанифест = ПолучитьИмяВременногоФайла("package.edf"); + КопироватьФайл(ИсходныйМанифест, РабочийМанифест); + + Возврат РабочийМанифест; + КонецФункции Процедура УстановитьНомерСборкиВМанифесте(Знач РабочийФайлМанифеста, Знач ВерсияМетаданных, Знач НомерСборки) - Лог.Отладка("Устанавливаю версию: " + ВерсияМетаданных); - - ЧтениеТекста = Новый ЧтениеТекста(); - ЧтениеТекста.Открыть(РабочийФайлМанифеста, КодировкаТекста.UTF8); - Данные = ЧтениеТекста.Прочитать(); - ЧтениеТекста.Закрыть(); - - НовыеДанные = СтрЗаменить(Данные, "%НомерСборки%", НомерСборки); - НовыеДанные = СтрЗаменить(НовыеДанные, "%ВерсияМетаданных%", ВерсияМетаданных); - - Запись = Новый ЗаписьТекста(РабочийФайлМанифеста, КодировкаТекста.UTF8); - Запись.Записать(НовыеДанные); - Запись.Закрыть(); + Лог.Отладка("Устанавливаю версию: " + ВерсияМетаданных); + + ЧтениеТекста = Новый ЧтениеТекста(); + ЧтениеТекста.Открыть(РабочийФайлМанифеста, КодировкаТекста.UTF8); + Данные = ЧтениеТекста.Прочитать(); + ЧтениеТекста.Закрыть(); + + НовыеДанные = СтрЗаменить(Данные, "%НомерСборки%", НомерСборки); + НовыеДанные = СтрЗаменить(НовыеДанные, "%ВерсияМетаданных%", ВерсияМетаданных); + + Запись = Новый ЗаписьТекста(РабочийФайлМанифеста, КодировкаТекста.UTF8); + Запись.Записать(НовыеДанные); + Запись.Закрыть(); КонецПроцедуры diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os-template" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os-template" index df26def..2b9d1c5 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os-template" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os-template" @@ -3,7 +3,7 @@ // Прикладной интерфейс Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт - + КонецПроцедуры // Выполняет логику команды diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 192783e..f5157c2 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -3,53 +3,53 @@ Перем мРегистраторКоманд; Процедура ЗарегистрироватьКоманды(Знач Парсер) Экспорт - - КомандыИРеализация = Новый Соответствие; - мРегистраторКоманд.ПриРегистрацииКомандПриложения(КомандыИРеализация); - - Для Каждого КлючИЗначение Из КомандыИРеализация Цикл - ДобавитьКоманду(КлючИЗначение.Ключ, КлючИЗначение.Значение, Парсер); - КонецЦикла; - + + КомандыИРеализация = Новый Соответствие; + мРегистраторКоманд.ПриРегистрацииКомандПриложения(КомандыИРеализация); + + Для Каждого КлючИЗначение Из КомандыИРеализация Цикл + ДобавитьКоманду(КлючИЗначение.Ключ, КлючИЗначение.Значение, Парсер); + КонецЦикла; + КонецПроцедуры Процедура РегистраторКоманд(Знач ОбъектРегистратор) Экспорт - мИсполнителиКоманд = Новый Соответствие; - мРегистраторКоманд = ОбъектРегистратор; + мИсполнителиКоманд = Новый Соответствие; + мРегистраторКоманд = ОбъектРегистратор; КонецПроцедуры Функция ПолучитьКоманду(Знач ИмяКоманды) Экспорт - - КлассРеализации = мИсполнителиКоманд[ИмяКоманды]; - Если КлассРеализации = Неопределено Тогда - ВызватьИсключение "Неверная операция. Команда '"+ИмяКоманды+"' не предусмотрена"; - КонецЕсли; - - Возврат КлассРеализации; + + КлассРеализации = мИсполнителиКоманд[ИмяКоманды]; + Если КлассРеализации = Неопределено Тогда + ВызватьИсключение "Неверная операция. Команда '"+ИмяКоманды+"' не предусмотрена"; + КонецЕсли; + + Возврат КлассРеализации; КонецФункции Функция ВыполнитьКоманду(Знач ИмяКоманды, Знач ПараметрыКоманды) Экспорт - - Команда = ПолучитьКоманду(ИмяКоманды); - РезультатКоманды = Команда.ВыполнитьКоманду(ПараметрыКоманды); - Если РезультатКоманды = Неопределено Тогда - РезультатКоманды = 0; - КонецЕсли; + Команда = ПолучитьКоманду(ИмяКоманды); + + РезультатКоманды = Команда.ВыполнитьКоманду(ПараметрыКоманды); + Если РезультатКоманды = Неопределено Тогда + РезультатКоманды = 0; + КонецЕсли; - Возврат РезультатКоманды; + Возврат РезультатКоманды; КонецФункции Процедура ДобавитьКоманду(Знач ИмяКоманды, Знач КлассРеализации, Знач Парсер) - - РеализацияКоманды = Новый(КлассРеализации); - РеализацияКоманды.ЗарегистрироватьКоманду(ИмяКоманды, Парсер); - мИсполнителиКоманд.Вставить(ИмяКоманды, РеализацияКоманды); + + РеализацияКоманды = Новый(КлассРеализации); + РеализацияКоманды.ЗарегистрироватьКоманду(ИмяКоманды, Парсер); + мИсполнителиКоманд.Вставить(ИмяКоманды, РеализацияКоманды); КонецПроцедуры Процедура ПоказатьСправкуПоКомандам() Экспорт - ВыполнитьКоманду("help", Новый Соответствие); + ВыполнитьКоманду("help", Новый Соответствие); КонецПроцедуры \ No newline at end of file diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\261\320\276\321\200\320\272\320\270.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\261\320\276\321\200\320\272\320\270.os" index 381c16f..bea3d27 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\261\320\276\321\200\320\272\320\270.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\261\320\276\321\200\320\272\320\270.os" @@ -8,7 +8,7 @@ // Возвращает значение рабочего каталога, глобальное для всех шагов сборки // Функция РабочийКаталог() Экспорт - + Если мРабочийКаталогСборки = Неопределено Тогда Переменная = ПолучитьПеременнуюСреды(ИмяПеременнойОкруженияКаталогСборки()); @@ -18,19 +18,19 @@ мРабочийКаталогСборки = ОбъединитьПути(ТекущийКаталог(), ".packman"); КонецЕсли; КонецЕсли; - + ФС.ОбеспечитьКаталог(мРабочийКаталогСборки); - + Возврат мРабочийКаталогСборки; - + КонецФункции // РабочийКаталог() Экспорт // Получает конфигуратор, настроенный на рабочий каталог и временную базу // Функция ПолучитьКонфигуратор() Экспорт - + УК = Новый УправлениеКонфигуратором(); - + ИмяКонфигурационногоФайла = ПолучитьПутьКФайлуКонфигурации(); Если ФС.ФайлСуществует(ИмяКонфигурационногоФайла) Тогда Лог.Отладка("Файл настройки подключения найден."); @@ -39,9 +39,9 @@ Лог.Отладка("Файл настройки подключения не найден"); КонецЕсли; УК.КаталогСборки(РабочийКаталог()); - + Возврат УК; - + КонецФункции Процедура УстановитьКонтекстПодключения(УК, ИмяКонфигурационногоФайла) @@ -87,37 +87,38 @@ КонецФункции Функция ПрочитатьИнформациюОМетаданных(Знач ИмяФайла) Экспорт - + Результат = ПрочитатьДанныеИзФайла(ИмяФайла); Если Не Результат.Свойство("Версия") Тогда ВызватьИсключение "Не найдено поле Версия в файле метаданных"; КонецЕсли; - + // Предустановленное окружение Переменные = ПолучитьПеременнуюСреды("VPACKMAN_BUILDVARS"); Если Переменные <> Неопределено Тогда - Лог.Отладка("Обнаружена переменная VPACKMAN_BUILDVARS"); - Лог.Отладка("VPACKMAN_BUILDVARS=" + Переменные); - Строки = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(Переменные, ";"); - Для Каждого Стр Из Строки Цикл - Лог.Отладка("Прочитано: " + Стр); - Позиция = Найти(Стр, "="); - Если Позиция = 0 Тогда - Продолжить; - КонецЕсли; - - Результат.Вставить(Лев(Стр, Позиция-1), Сред(Стр, Позиция+1)); + Лог.Отладка("Обнаружена переменная VPACKMAN_BUILDVARS"); + Лог.Отладка("VPACKMAN_BUILDVARS=" + Переменные); + + Строки = СтроковыеФункции.РазложитьСтрокуВМассивПодстрок(Переменные, ";"); + Для Каждого Стр Из Строки Цикл + Лог.Отладка("Прочитано: " + Стр); + Позиция = Найти(Стр, "="); + Если Позиция = 0 Тогда + Продолжить; + КонецЕсли; + + Результат.Вставить(Лев(Стр, Позиция-1), Сред(Стр, Позиция+1)); КонецЦикла; Иначе Лог.Отладка("Переменная окружения VPACKMAN_BUILDVARS не найдена"); КонецЕсли; - + Возврат Результат; - + КонецФункции // ПрочитатьИнформациюОМетаданных() Функция ПрочитатьДанныеИзФайла(ИмяФайла) - + Результат = Новый Структура(); ЧтениеТекста = Новый ЧтениеТекста(ИмяФайла); Лог.Отладка("Читаю информацию о метаданных"); @@ -133,26 +134,26 @@ КонецЕсли; Результат.Вставить(Лев(Стр, Позиция-1), Сред(Стр, Позиция+1)); - КонецЦикла; - + ЧтениеТекста.Закрыть(); - + Возврат Результат; + КонецФункции Функция ОпределитьСтандартноеИмяКаталогаШаблона(Знач ИнформацияОМетаданных) Экспорт - + Перем ВерсияМетаданных; Перем НомерКоммита; Перем НомерСборкиСервера; - - ВерсияМетаданных = ИнформацияОМетаданных.Версия; + + ВерсияМетаданных = СтрЗаменить(ИнформацияОМетаданных.Версия, "/", "_"); ИнформацияОМетаданных.Свойство("НомерВерсииХранилища", НомерКоммита); ИнформацияОМетаданных.Свойство("НомерСборкиСервера", НомерСборкиСервера); - + Возврат ВерсияМетаданных + НеобязательныйСуффикс("-", НомерКоммита) + НеобязательныйСуффикс(".", НомерСборкиСервера); - + КонецФункции // ОпределитьСтандартноеИмяКаталогаШаблона() Функция НеобязательныйСуффикс(Знач Разделитель, Знач Значение) diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" index 8af8e47..1f01aea 100644 --- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" @@ -2,11 +2,11 @@ Перем мБазовыйКаталог; Функция ИмяЛогаСистемы() Экспорт - Возврат "vanessa.app.packman"; + Возврат "vanessa.app.packman"; КонецФункции Процедура ПриРегистрацииКомандПриложения(Знач КлассыРеализацииКоманд) Экспорт - + КлассыРеализацииКоманд["help"] = "КомандаСправкаПоПараметрам"; КлассыРеализацииКоманд["version"] = "КомандаВерсия"; КлассыРеализацииКоманд["load-storage"] = "КомандаВыгрузитьИзХранилища"; @@ -27,17 +27,17 @@ // Иными словами, здесь указывается какой обработчик надо вызывать, если приложение запущено без какой-либо команды // myapp /home/user/somefile.txt будет аналогично myapp default-action /home/user/somefile.txt Функция ИмяКомандыПоУмолчанию() Экспорт - // Возврат "default-action"; + // Возврат "default-action"; КонецФункции Функция БазовыйКаталогЗапуска(Знач Каталог = Неопределено) Экспорт - + Если Каталог <> Неопределено Тогда мБазовыйКаталог = Каталог; КонецЕсли; - + Возврат ?(мБазовыйКаталог = Неопределено, СтартовыйСценарий().Каталог, мБазовыйКаталог); - + КонецФункции // БазовыйКаталогЗапуска() Экспорт Функция ВерсияПродукта() Экспорт diff --git "a/tools/\320\241\320\261\320\276\321\200\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270\320\236\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.epf" "b/tools/\320\241\320\261\320\276\321\200\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\270\320\236\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\321\205.epf" index 55f17e727d2e294d98c744f1e940174a5682b008..92bd06ab4fee9fa9b7e1d9d86b914f916455d49e 100644 GIT binary patch delta 2882 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 bJHXtQBlua_d0{Zw!*W(aZE}_whg