diff --git "a/features/step_definitions/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/features/step_definitions/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
index 5954eb5f..0e46da8c 100644
--- "a/features/step_definitions/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
+++ "b/features/step_definitions/\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
@@ -73,7 +73,6 @@
ИмяПроекта = Новый Файл(СтрокаПутиБазы).ИмяБезРасширения;
Ожидаем.Что(Парсер.НайтиПоИмени(ИмяПроекта)).Существует();
-
КонецПроцедуры
// { Служебные функции
diff --git "a/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.feature" "b/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.feature"
index c5e1d9e9..2ead6074 100644
--- "a/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.feature"
+++ "b/features/\320\241\320\261\320\276\321\200\320\272\320\260\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.feature"
@@ -68,8 +68,20 @@
И файл "build/out/extdp.epf" существует
И файл "file.txt" не существует
-# Сценарий: Сборка одной внешней обработки
-# Когда TODO
+Сценарий: Сборка внешней обработки в отдельном каталоге с изменением номера сборки
+
+ # Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os compileepf build/out/fixture-epf build/out --build-number 4567 --for-meta-comment --language ru --debuglogfile build/a.log"
+ Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os compileepf build/out/fixture-epf build/out --build-number 4567 --for-meta-comment --language ru"
+ И Вывод команды "oscript" содержит "Собирали: fixture изменен"
+ # И Я добавляю параметр "--debuglogfile build/a.log" для команды "oscript"
+
+ # Когда Я выполняю команду "oscript"
+ И Я сообщаю вывод команды "oscript"
+ # И я показываю текст файла "build/a.log"
+ Тогда Код возврата команды "oscript" равен 0
+ И файл "build/out/Тест1.epf" существует
+ И файл "file.txt" не существует
+ Тогда файл "build/out/fixture-epf/fixture/Тест1.xml" содержит "1.0.0.4567"
# Сценарий: Сборка одной внешней обработки с явно заданной базой
# Когда TODO
diff --git "a/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\235\320\276\320\274\320\265\321\200\320\260\320\222\320\265\321\200\321\201\320\270\320\270_\320\270\320\273\320\270_\320\241\320\261\320\276\321\200\320\272\320\270.feature" "b/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\235\320\276\320\274\320\265\321\200\320\260\320\222\320\265\321\200\321\201\320\270\320\270_\320\270\320\273\320\270_\320\241\320\261\320\276\321\200\320\272\320\270.feature"
index 28110488..75d4c541 100644
--- "a/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\235\320\276\320\274\320\265\321\200\320\260\320\222\320\265\321\200\321\201\320\270\320\270_\320\270\320\273\320\270_\320\241\320\261\320\276\321\200\320\272\320\270.feature"
+++ "b/features/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\235\320\276\320\274\320\265\321\200\320\260\320\222\320\265\321\200\321\201\320\270\320\270_\320\270\320\273\320\270_\320\241\320\261\320\276\321\200\320\272\320\270.feature"
@@ -7,7 +7,6 @@
Контекст:
Допустим я подготовил репозиторий и рабочий каталог проекта
- И я подготовил рабочую базу проекта "./build/ib" по умолчанию
И Я сохраняю значение "INFO" в переменную окружения "LOGOS_LEVEL"
Дано Я очищаю параметры команды "oscript" в контексте
@@ -15,21 +14,25 @@
Сценарий: Изменение версии конфигурации, указан путь Configuration.xml для конфигурации
# И Я сохраняю значение "DEBUG" в переменную окружения "LOGOS_LEVEL"
+ Дано Я копирую каталог "cf" из каталога "tests/fixtures" проекта в рабочий каталог
Тогда файл "cf/Configuration.xml" содержит "1.0.0.0"
Когда Я добавляю параметр "<КаталогПроекта>/src/main.os set-version" для команды "oscript"
И Я добавляю параметр "--new-version 2.0.0.0" для команды "oscript"
И Я добавляю параметр "--src cf/Configuration.xml" для команды "oscript"
+ И Я добавляю параметр "--debuglogfile build/a.log" для команды "oscript"
Когда Я выполняю команду "oscript"
- # И Я сообщаю вывод команды "oscript"
+ И Я сообщаю вывод команды "oscript"
+ И я показываю текст файла "build/a.log"
+
Тогда Вывод команды "oscript" содержит
- | Изменяю версию в исходниках конфигурации 1С на 2.0.0.0 |
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
| Старая версия 1.0.0.0 |
И Код возврата команды "oscript" равен 0
- Тогда файл "cf/Configuration.xml" содержит "2.0.0.0"
+ Тогда файл "cf/Configuration.xml" содержит " 2.0.0.0"
Сценарий: Изменение версии конфигурации, указан путь Configuration.xml для расширения
@@ -42,28 +45,31 @@
Когда Я выполняю команду "oscript"
Тогда Вывод команды "oscript" содержит
- | Изменяю версию в исходниках конфигурации 1С на 2.0.0.0 |
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
| Старая версия 1.1.0.0 |
И Код возврата команды "oscript" равен 0
- Тогда файл "cfe/Configuration.xml" содержит "2.0.0.0"
+ Тогда файл "cfe/Configuration.xml" содержит " 2.0.0.0"
Сценарий: Изменение версии конфигурации, указан каталог корня исходников конфигурации
+ Дано Я копирую каталог "cf" из каталога "tests/fixtures" проекта в рабочий каталог
Когда Я добавляю параметр "<КаталогПроекта>/src/main.os set-version" для команды "oscript"
И Я добавляю параметр "--new-version 2.0.0.0" для команды "oscript"
И Я добавляю параметр "--src cf" для команды "oscript"
+ И Я добавляю параметр "--debuglogfile build/a.log" для команды "oscript"
Когда Я выполняю команду "oscript"
- # И Я сообщаю вывод команды "oscript"
+ И Я сообщаю вывод команды "oscript"
+ И я показываю текст файла "build/a.log"
Тогда Вывод команды "oscript" содержит
- | Изменяю версию в исходниках конфигурации 1С на 2.0.0.0 |
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
| Старая версия 1.0.0.0 |
И Код возврата команды "oscript" равен 0
- Тогда файл "cf/Configuration.xml" содержит "2.0.0.0"
+ Тогда файл "cf/Configuration.xml" содержит " 2.0.0.0"
Сценарий: Изменение версии конфигурации, указан каталог корня исходников расширения
@@ -75,31 +81,35 @@
Когда Я выполняю команду "oscript"
Тогда Вывод команды "oscript" содержит
- | Изменяю версию в исходниках конфигурации 1С на 2.0.0.0 |
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
| Старая версия 1.1.0.0 |
И Код возврата команды "oscript" равен 0
- Тогда файл "cfe/Configuration.xml" содержит "2.0.0.0"
+ Тогда файл "cfe/Configuration.xml" содержит " 2.0.0.0"
Сценарий: Изменение версии и конфигурации и расширения, указан каталог корня проекта
+ Дано Я копирую каталог "cf" из каталога "tests/fixtures" проекта в рабочий каталог
Дано Я копирую каталог "cfe" из каталога "tests/fixtures" проекта в рабочий каталог
Когда Я добавляю параметр "<КаталогПроекта>/src/main.os set-version" для команды "oscript"
И Я добавляю параметр "--new-version 2.0.0.0" для команды "oscript"
И Я добавляю параметр "--src ." для команды "oscript"
+ # И Я добавляю параметр "--debuglogfile build/a.log" для команды "oscript"
Когда Я выполняю команду "oscript"
+ # И Я сообщаю вывод команды "oscript"
+ # И я показываю текст файла "build/a.log"
Тогда Вывод команды "oscript" содержит
- | Изменяю версию в исходниках конфигурации 1С на 2.0.0.0 |
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
| Старая версия 1.0.0.0 |
| Старая версия 1.1.0.0 |
И Код возврата команды "oscript" равен 0
- Тогда файл "cf/Configuration.xml" содержит "2.0.0.0"
- Тогда файл "cfe/Configuration.xml" содержит "2.0.0.0"
+ Тогда файл "cf/Configuration.xml" содержит " 2.0.0.0"
+ Тогда файл "cfe/Configuration.xml" содержит " 2.0.0.0"
Сценарий: Изменение версии, если в файле не задана версия
@@ -111,9 +121,224 @@
Когда Я выполняю команду "oscript"
Тогда Вывод команды "oscript" содержит
- | Изменяю версию в исходниках конфигурации 1С на 2.0.0.0 |
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
| Старая версия |
И Код возврата команды "oscript" равен 0
Тогда файл "cfe_without_version/Configuration.xml" содержит "2.0.0.0"
+
+Сценарий: Изменение версии внешней обработки из комментария, указан путь каталога исходников обработки
+
+ Дано Я копирую каталог "xdd_test" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога
+ И я создаю файл "build/xdd_test/xdd_test.xml" с текстом
+ """
+
+
+
+
+
+ c3831ec8-d8d5-4f93-8a22-f9bfae07327f
+ 645cde0d-2357-42ea-8a8b-12cff526f0bd
+
+
+ 9506ef93-ef46-43e1-b089-9f25add335b2
+ a3f477fd-3fcc-4e25-9f24-0566b2d830fc
+
+
+
+ xdd_test
+
+ Xdd test v1.2.3.44
+
+
+
+
+ """
+
+ И Я сохраняю значение "DEBUG" в переменную окружения "LOGOS_LEVEL"
+ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os set-version" для команды "oscript"
+ И Я добавляю параметр "--new-version 2.0.0.0" для команды "oscript"
+ И Я добавляю параметр "--for-meta-comment" для команды "oscript"
+ И Я добавляю параметр "--src build/xdd_test" для команды "oscript"
+ И Я добавляю параметр "--debuglogfile build/a.log" для команды "oscript"
+
+ Когда Я выполняю команду "oscript"
+ И Я сообщаю вывод команды "oscript"
+ И я показываю текст файла "build/a.log"
+ Тогда Вывод команды "oscript" содержит
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
+ | Старая версия 1.2.3.44 |
+
+ И Код возврата команды "oscript" равен 0
+
+ Тогда файл "build/xdd_test/xdd_test.xml" содержит "Xdd test v 2.0.0.0"
+
+Сценарий: Изменение версии внешней обработки из пустого комментария, указан путь каталога исходников обработки
+
+ Дано Я копирую каталог "xdd_test" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога
+ И я создаю файл "build/xdd_test/xdd_test.xml" с текстом
+ """
+
+
+
+
+
+ c3831ec8-d8d5-4f93-8a22-f9bfae07327f
+ 645cde0d-2357-42ea-8a8b-12cff526f0bd
+
+
+ 9506ef93-ef46-43e1-b089-9f25add335b2
+ a3f477fd-3fcc-4e25-9f24-0566b2d830fc
+
+
+
+ xdd_test
+
+
+
+
+
+
+ """
+
+ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os set-version" для команды "oscript"
+ И Я добавляю параметр "--new-version 2.0.0.0" для команды "oscript"
+ И Я добавляю параметр "--for-meta-comment" для команды "oscript"
+ И Я добавляю параметр "--src build/xdd_test" для команды "oscript"
+
+ Когда Я выполняю команду "oscript"
+ И Я сообщаю вывод команды "oscript"
+ Тогда Вывод команды "oscript" содержит
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
+ | Старая версия |
+
+ И Код возврата команды "oscript" равен 0
+
+ Тогда файл "build/xdd_test/xdd_test.xml" содержит "2.0.0.0"
+
+Сценарий: Изменение версии внешних обработок из комментария, указан путь к каталогу, внутри которого находятся обработки
+
+ Дано я создаю каталог "build/1"
+ Дано я создаю каталог "build/2"
+ Дано Я копирую каталог "xdd_test" из каталога "tests/fixtures" проекта в подкаталог "build/1" рабочего каталога
+ Дано Я копирую каталог "xdd_test" из каталога "tests/fixtures" проекта в подкаталог "build/2" рабочего каталога
+ И я создаю файл "build/1/xdd_test/xdd_test.xml" с текстом
+ """
+
+
+
+
+
+ c3831ec8-d8d5-4f93-8a22-f9bfae07327f
+ 645cde0d-2357-42ea-8a8b-12cff526f0bd
+
+
+ 9506ef93-ef46-43e1-b089-9f25add335b2
+ a3f477fd-3fcc-4e25-9f24-0566b2d830fc
+
+
+
+ xdd_test
+
+ Xdd test v1.2.3.44
+
+
+
+
+ """
+ И я создаю файл "build/2/xdd_test/xdd_test.xml" с текстом
+ """
+
+
+
+
+
+ c3831ec8-d8d5-4f93-8a22-f9bfae07327f
+ 645cde0d-2357-42ea-8a8b-12cff526f0bd
+
+
+ 9506ef93-ef46-43e1-b089-9f25add335b2
+ a3f477fd-3fcc-4e25-9f24-0566b2d830fc
+
+
+
+ xdd_test
+
+ Xdd test v1.2.3.45
+
+
+
+
+ """
+
+ И Я сохраняю значение "DEBUG" в переменную окружения "LOGOS_LEVEL"
+ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os set-version" для команды "oscript"
+ И Я добавляю параметр "--new-version 2.0.0.0" для команды "oscript"
+ И Я добавляю параметр "--for-meta-comment" для команды "oscript"
+ И Я добавляю параметр "--src build" для команды "oscript"
+ И Я добавляю параметр "--debuglogfile build/a.log" для команды "oscript"
+
+ Когда Я выполняю команду "oscript"
+ И Я сообщаю вывод команды "oscript"
+ И я показываю текст файла "build/a.log"
+ Тогда Вывод команды "oscript" содержит
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
+ | Старая версия 1.2.3.44 |
+ | Старая версия 1.2.3.45 |
+
+ И Код возврата команды "oscript" равен 0
+
+ Тогда файл "build/1/xdd_test/xdd_test.xml" содержит "Xdd test v 2.0.0.0"
+ Тогда файл "build/2/xdd_test/xdd_test.xml" содержит "Xdd test v 2.0.0.0"
+
+Сценарий: Изменение версии и конфигурации и расширения и внешнего файла, указан каталог корня проекта
+
+ Дано Я копирую каталог "cf" из каталога "tests/fixtures" проекта в рабочий каталог
+ Дано Я копирую каталог "cfe" из каталога "tests/fixtures" проекта в рабочий каталог
+ Дано Я копирую каталог "xdd_test" из каталога "tests/fixtures" проекта в подкаталог "build" рабочего каталога
+ И я создаю файл "build/xdd_test/xdd_test.xml" с текстом
+ """
+
+
+
+
+
+ c3831ec8-d8d5-4f93-8a22-f9bfae07327f
+ 645cde0d-2357-42ea-8a8b-12cff526f0bd
+
+
+ 9506ef93-ef46-43e1-b089-9f25add335b2
+ a3f477fd-3fcc-4e25-9f24-0566b2d830fc
+
+
+
+ xdd_test
+
+ Xdd test v1.2.3.44
+
+
+
+
+ """
+
+ Когда Я добавляю параметр "<КаталогПроекта>/src/main.os set-version" для команды "oscript"
+ И Я добавляю параметр "--new-version 2.0.0.0" для команды "oscript"
+ И Я добавляю параметр "--src ." для команды "oscript"
+ И Я добавляю параметр "--for-meta-comment" для команды "oscript"
+ И Я добавляю параметр "--debuglogfile build/a.log" для команды "oscript"
+
+ Когда Я выполняю команду "oscript"
+ И Я сообщаю вывод команды "oscript"
+ И я показываю текст файла "build/a.log"
+ Тогда Вывод команды "oscript" содержит
+ | Изменяю версию в исходниках конфигурации или внешнего файла 1С на 2.0.0.0 |
+ | Старая версия 1.0.0.0 |
+ | Старая версия 1.1.0.0 |
+ | Старая версия 1.2.3.44 |
+
+ И Код возврата команды "oscript" равен 0
+
+ Тогда файл "cf/Configuration.xml" содержит " 2.0.0.0"
+ Тогда файл "cfe/Configuration.xml" содержит " 2.0.0.0"
+ Тогда файл "build/xdd_test/xdd_test.xml" содержит "Xdd test v 2.0.0.0"
diff --git a/src/main.os b/src/main.os
index 769f6260..aa3b4de9 100644
--- a/src/main.os
+++ b/src/main.os
@@ -255,6 +255,7 @@
СтруктураПодключения.Вставить("КодЯзыка", ЗначенияПараметров["--language"]);
СтруктураПодключения.Вставить("КодЯзыкаСеанса", ЗначенияПараметров["--locale"]);
СтруктураПодключения.Вставить("РазрядностьПлатформы", ЗначенияПараметров["--bitness"]);
+ СтруктураПодключения.Вставить("ВерсияПлатформы", ЗначенияПараметров["--v8version"]);
Рез = Новый Структура;
Для каждого КлючЗначение Из СтруктураПодключения Цикл
@@ -310,7 +311,6 @@
Возврат;
КонецЕсли;
-
ФайлЖурнала = Новый ВыводЛогаВФайл;
ФайлЖурнала.ОткрытьФайл(ПутьФайлаВывода);
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\261\320\276\321\200\320\272\320\260\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.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\261\320\276\321\200\320\272\320\260\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os"
index 8a4c974f..480b6f8b 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\261\320\276\321\200\320\272\320\260\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.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\261\320\276\321\200\320\272\320\260\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os"
@@ -28,10 +28,14 @@
"Ключ кэшированных значений файлов, default: compileepfrunner");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--onlycopy",
"Флаг, только копировать. Без сборки обработки, даже если выглядит как обработка");
+ Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--build-number",
+ "Номер сборки для установки в последний разряд номера версии");
+ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--for-meta-comment",
+ "Версия указана в комментарии внешнего файла");
Парсер.ДобавитьКоманду(ОписаниеКоманды);
-КонецПроцедуры // ЗарегистрироватьКоманду
+КонецПроцедуры
// Выполняет логику команды
//
@@ -45,14 +49,19 @@
УпаковщикВнешнихОбработок.УстановитьЛог(ДополнительныеПараметры.Лог);
ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];
+ НастройкаИзмененияВерсии = Новый Структура;
+ НастройкаИзмененияВерсии.Вставить("НомерСборки", ПараметрыКоманды["--build-number"]);
+ НастройкаИзмененияВерсии.Вставить("ВерсияВКомментарииМетаданного", ПараметрыКоманды["--for-meta-comment"]);
+ Если ЗначениеЗаполнено(НастройкаИзмененияВерсии.НомерСборки) И Не НастройкаИзмененияВерсии.ВерсияВКомментарииМетаданного Тогда
+ ВызватьИсключение "При указании номера сборки нужно указывать флаг ""--for-meta-comment"", т.к. других вариантов установки версии пока не реализовано."
+ КонецЕсли;
УпаковщикВнешнихОбработок.Собрать(
ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["inputPath"]),
ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["outputPath"]),
- ДанныеПодключения.СтрокаПодключения, ДанныеПодключения.Пользователь, ДанныеПодключения.Пароль,
- ПараметрыКоманды["--v8version"],
- ПараметрыКоманды["--onlycopy"],
- ПараметрыКоманды["--cachekey"]);
+ ДанныеПодключения,
+ ПараметрыКоманды["--onlycopy"], ПараметрыКоманды["--cachekey"],
+ НастройкаИзмененияВерсии);
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
-КонецФункции // ВыполнитьКоманду
+КонецФункции
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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\222\320\265\321\200\321\201\320\270\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\222\320\265\321\200\321\201\320\270\320\270.os"
index 880e7a23..82329dcd 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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\222\320\265\321\200\321\201\320\270\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\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\260\320\222\320\265\321\200\321\201\320\270\320\270.os"
@@ -22,7 +22,9 @@
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, " Установка номера версии файлов 1С (конфигурации, расширения, внешние обработки\отчеты).");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--new-version",
- "Номер версии, который нужно установить");
+ "Номер версии, который нужно установить. Внимание - требуется 4х-разрядная версия!");
+ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--for-meta-comment",
+ "Версия указана в комментарии внешнего файла");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--src",
"Путь Configuration.xml или каталога, содержащего этот файл, или корневого каталога для поиска в подкаталогах - для исходников конфигурации или расширения");
@@ -43,13 +45,15 @@
Лог = ДополнительныеПараметры.Лог;
- НомерВерсии = ПараметрыКоманды["--new-version"];
ПутьФайла = ПараметрыКоманды["--src"];
+ НомерВерсии = ПараметрыКоманды["--new-version"];
+ НастройкиУстановки = Новый Структура;
+ НастройкиУстановки.Вставить("ВерсияВКомментарииМетаданного", ПараметрыКоманды["--for-meta-comment"]);
- Лог.Информация("Изменяю версию в исходниках конфигурации 1С на %1 - %2", НомерВерсии, ПутьФайла);
+ Лог.Информация("Изменяю версию в исходниках конфигурации или внешнего файла 1С на %1 - %2", НомерВерсии, ПутьФайла);
МенеджерВерсийФайлов1С = Новый МенеджерВерсийФайлов1С;
- СтарыеВерсии = МенеджерВерсийФайлов1С.УстановитьВерсиюКонфигурации(ПутьФайла, НомерВерсии);
+ СтарыеВерсии = МенеджерВерсийФайлов1С.УстановитьВерсиюКонфигурации(ПутьФайла, НомерВерсии, НастройкиУстановки);
Для каждого КлючЗначение Из СтарыеВерсии Цикл
Лог.Информация(" Старая версия %1, файл - %2", КлючЗначение.Значение, КлючЗначение.Ключ);
diff --git "a/src/\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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.os" "b/src/\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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.os"
index b1d5b9df..4a6e208e 100644
--- "a/src/\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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.os"
+++ "b/src/\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\222\320\265\321\200\321\201\320\270\320\271\320\244\320\260\320\271\320\273\320\276\320\2621\320\241.os"
@@ -25,7 +25,7 @@
Результат = Новый Соответствие;
- Для каждого Файл Из ФайлыКонфигураций(ПутьФайлаКонфигурации, Ложь) Цикл
+ Для Каждого Файл Из ФайлыКонфигураций(ПутьФайлаКонфигурации, Ложь) Цикл
СтрокаXML = ПрочитатьФайл(Файл.ПолноеИмя);
Результат.Вставить(Файл.ПолноеИмя, ВерсияКонфигурацииПоХМЛ(СтрокаXML));
КонецЦикла;
@@ -40,23 +40,52 @@
// ПутьИсходников - Строка - путь к файлу Configuration.xml или к каталогу, его содержащему
// если в каталоге нет этого файла, выполняется рекурсивный поиск всех таких файлов в подкаталогах
// НовыйНомерВерсии - Строка - версия для установки
+// НастройкиУстановки - Структура - Разные варианты установки для внешних файлов. Может быть пустой коллекцией.
+// * ВерсияВКомментарииМетаданного - Булево - По умолчанию. Искать\устанавливать версию в комментарии внешнего файла
//
// Возвращаемое значение:
// Соответствие - текущая версия конфигурации
// * Ключ - Строка - путь найденного файла Configuration.xml
// * Значение - Строка - предыдущая версия из этого файла
//
-Функция УстановитьВерсиюКонфигурации(Знач ПутьИсходников, Знач НовыйНомерВерсии) Экспорт
+Функция УстановитьВерсиюКонфигурации(Знач ПутьИсходников, Знач НовыйНомерВерсии, Знач НастройкиУстановки) Экспорт
Результат = Новый Соответствие;
+ ВнешниеФайлы = Неопределено;
+
+ Попытка
+ Для Каждого Файл Из ФайлыКонфигураций(ПутьИсходников) Цикл
+ ПредыдущаяВерсия = УстановитьВерсиюВХМЛ(Файл.ПолноеИмя, НовыйНомерВерсии);
+ Результат.Вставить(Файл.ПолноеИмя, ПредыдущаяВерсия);
+ КонецЦикла;
+ Исключение
+ ВнешниеФайлы = ВнешниеФайлы(ПутьИсходников);
+ Если Не ЗначениеЗаполнено(ВнешниеФайлы) Тогда
+ ВызватьИсключение;
+ КонецЕсли;
+ КонецПопытки;
- Для каждого Файл Из ФайлыКонфигураций(ПутьИсходников) Цикл
- ПредыдущаяВерсия = ЗаписатьНомерВерсии(Файл.ПолноеИмя, НовыйНомерВерсии);
- Результат.Вставить(Файл.ПолноеИмя, ПредыдущаяВерсия);
- КонецЦикла;
+ Если ВнешниеФайлы = Неопределено Тогда
+ ВнешниеФайлы = ВнешниеФайлы(ПутьИсходников);
+ КонецЕсли;
+ МенятьХМЛ = Не ЗначениеЗаполнено(НастройкиУстановки) Или НастройкиУстановки.ВерсияВКомментарииМетаданного;
+ Если Не МенятьХМЛ Тогда
+ Лог.Предупреждение("Найдены xml-исходники внешних обработок\отчетов 1С, но в команде не указан вариант указания версии.")
+ Иначе
+ Для Каждого Файл Из ВнешниеФайлы Цикл
+ ИмяФайла = Файл.ПолноеИмя;
+ Попытка
+ ПредыдущаяВерсия = УстановитьВерсиюВнешнегоФайла(ИмяФайла, НовыйНомерВерсии);
+ Результат.Вставить(ИмяФайла, ПредыдущаяВерсия);
+ Исключение
+ ИнфоОшибки = ИнформацияОбОшибке();
+ Лог.Отладка("Пропускаю файл из-за ошибки чтения или определения версии. %1
+ |%2", ИмяФайла, КраткоеПредставлениеОшибки(ИнфоОшибки));
+ КонецПопытки;
+ КонецЦикла;
+ КонецЕсли;
Возврат Результат;
-
КонецФункции
// Устанавливает новый номер сборки версии конфигурации или расширения в исходниках. Заменяется последний разряд версии
@@ -76,7 +105,7 @@
Результат = Новый Соответствие;
- Для каждого Файл Из ФайлыКонфигураций(ПутьИсходников) Цикл
+ Для Каждого Файл Из ФайлыКонфигураций(ПутьИсходников) Цикл
ПредыдущаяВерсия = ЗаписатьНомерСборки(Файл.ПолноеИмя, НовыйНомерСборки);
Результат.Вставить(Файл.ПолноеИмя, ПредыдущаяВерсия);
КонецЦикла;
@@ -85,6 +114,36 @@
КонецФункции
+// Устанавливает новый номер сборки версии внешней обработки\отчета в исходниках. Заменяется последний разряд версии
+// Например, если старая версия 5.4.3.124, а номер сборки 125, то новая версия 5.4.3.125
+//
+// Параметры:
+// ПутьИсходников - Строка - путь к корневому xml-файлу или к каталогу, его содержащему
+// если в каталоге нет этого файла, выполняется рекурсивный поиск всех таких файлов в подкаталогах
+// НовыйНомерСборки - Строка - номер сборки для установки
+// НастройкиУстановки - Структура - Разные варианты установки для внешних файлов. Может быть пустой коллекцией.
+// * ВерсияВКомментарииМетаданного - Булево - По умолчанию. Искать\устанавливать версию в комментарии внешнего файла
+//
+// Возвращаемое значение:
+// Соответствие - текущая версия конфигурации
+// * Ключ - Строка - путь найденного xml-файла
+// * Значение - Строка - предыдущая версия из этого файла
+//
+Функция УстановитьНомерСборкиДляВнешнегоФайла(Знач ПутьИсходников, Знач НовыйНомерСборки, Знач НастройкиУстановки) Экспорт
+
+ Результат = Новый Соответствие;
+
+ Если НастройкиУстановки.ВерсияВКомментарииМетаданного Тогда
+ Для Каждого Файл Из ВнешниеФайлы(ПутьИсходников) Цикл
+ ПредыдущаяВерсия = ЗаписатьНомерСборкиВнешнегоФайла(Файл.ПолноеИмя, НовыйНомерСборки);
+ Результат.Вставить(Файл.ПолноеИмя, ПредыдущаяВерсия);
+ КонецЦикла;
+ КонецЕсли;
+
+ Возврат Результат;
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -97,65 +156,103 @@
КонецФункции
-Функция ВерсияКонфигурацииПоХМЛ(Знач ХМЛСтрокаФайлаКонфигурации)
+Процедура ЗаписатьФайл(Знач ПутьФайла, Знач НоваяСтрокаXML)
+ ТекстовыйДокумент = Новый ТекстовыйДокумент();
+ ТекстовыйДокумент.УстановитьТекст(НоваяСтрокаXML);
+ ТекстовыйДокумент.Записать(ПутьФайла, КодировкаТекста.UTF8);
+КонецПроцедуры
- РегулярноеВыражение = Новый РегулярноеВыражение("(\d+.\d+.\d+.\d+)<\/Version>");
- Совпадения = РегулярноеВыражение.НайтиСовпадения(ХМЛСтрокаФайлаКонфигурации);
- Если Совпадения.Количество() = 0 Тогда
- РегулярноеВыражение = Новый РегулярноеВыражение("");
- Если РегулярноеВыражение.Совпадает(ХМЛСтрокаФайлаКонфигурации) Тогда
- Возврат "";
- КонецЕсли;
+Функция ВерсияКонфигурацииПоХМЛ(Знач ХМЛСтрокаФайла)
+ Возврат ВерсияПоХМЛ(ХМЛСтрокаФайла, "Version");
+КонецФункции
+
+Функция ВерсияПоХМЛ(Знач ХМЛСтрокаФайла, Знач ИмяТегаСВерсией)
- ВызватьИсключение "Версия проекта не определена";
+ РегулярноеВыражение = РегуляркаПоискаВерсии(ИмяТегаСВерсией);
+
+ Совпадения = РегулярноеВыражение.НайтиСовпадения(ХМЛСтрокаФайла);
+ Если ЗначениеЗаполнено(Совпадения) Тогда
+ Результат = Совпадения[0].Группы[2].Значение;
+ Лог.Отладка("текущая версия %1", Результат);
+ Возврат Результат;
КонецЕсли;
- Результат = Совпадения[0].Группы[1].Значение;
+ РегулярноеВыражение = РегуляркаПоискаПустойВерсии(ИмяТегаСВерсией);
+ Если РегулярноеВыражение.Совпадает(ХМЛСтрокаФайла) Тогда
+ Возврат "";
+ КонецЕсли;
- Лог.Отладка("текущая версия %1", Результат);
+ ВызватьИсключение "Версия в файле не найдена. Неверный файл?";
- Возврат Результат;
+КонецФункции
+
+Функция УстановитьВерсиюВнешнегоФайла(ПутьВнешнегоФайла, НомерВерсии)
+
+ Лог.Отладка("устанавливаю версию %1 в исходниках внешнего файла %2", НомерВерсии, ПутьВнешнегоФайла);
+ СтрокаXML = ПрочитатьФайл(ПутьВнешнегоФайла);
+
+ ИМЯ_ТЕГА_С_ВЕРСИЕЙ = "Comment";
+ ПредыдущаяВерсия = ВерсияПоХМЛ(СтрокаXML, ИМЯ_ТЕГА_С_ВЕРСИЕЙ);
+
+ НоваяСтрокаXML = ИзменитьВерсиюВХМЛ(СтрокаXML, НомерВерсии, ИМЯ_ТЕГА_С_ВЕРСИЕЙ);
+ ЗаписатьФайл(ПутьВнешнегоФайла, НоваяСтрокаXML);
+
+ Возврат ПредыдущаяВерсия;
КонецФункции
-Функция ЗаписатьНомерВерсии(ПутьФайлаКонфигурации, НомерВерсии)
+Функция УстановитьВерсиюВХМЛ(ПутьФайлаКонфигурации, НомерВерсии)
Лог.Отладка("устанавливаю версию %1 в исходниках конфигурации %2", НомерВерсии, ПутьФайлаКонфигурации);
СтрокаXML = ПрочитатьФайл(ПутьФайлаКонфигурации);
ПредыдущаяВерсия = ВерсияКонфигурацииПоХМЛ(СтрокаXML);
- ИзменитьНомерВерсии(ПутьФайлаКонфигурации, СтрокаXML, НомерВерсии);
+ НоваяСтрокаXML = ИзменитьВерсиюКонфигурации(СтрокаXML, НомерВерсии);
+ ЗаписатьФайл(ПутьФайлаКонфигурации, НоваяСтрокаXML);
Возврат ПредыдущаяВерсия;
КонецФункции
-Процедура ИзменитьНомерВерсии(ПутьФайлаКонфигурации, СтрокаXML, НомерВерсии)
+Функция ИзменитьВерсиюКонфигурации(СтрокаXML, НомерВерсии)
+ Возврат ИзменитьВерсиюВХМЛ(СтрокаXML, НомерВерсии, "Version");
+КонецФункции
- ШаблонПодстановки = СтрШаблон("%1", НомерВерсии);
- РегулярноеВыражение = Новый РегулярноеВыражение("(\d+.\d+.\d+.\d+<\/Version>)");
- НоваяСтрокаXML = РегулярноеВыражение.Заменить(СтрокаXML, ШаблонПодстановки);
+Функция ИзменитьВерсиюВХМЛ(СтрокаXML, НомерВерсии, Знач ИмяТегаСВерсией)
- РегулярноеВыражение = Новый РегулярноеВыражение("()");
- НоваяСтрокаXML = РегулярноеВыражение.Заменить(НоваяСтрокаXML, ШаблонПодстановки);
+ ШаблонПодстановки = СтрШаблон("<%1>$1 %2$3%1>", ИмяТегаСВерсией, НомерВерсии);
+ ШаблонПодстановкиДляПустойВерсии = СтрШаблон("<%1>%2%1>", ИмяТегаСВерсией, НомерВерсии);
- ТекстовыйДокумент = Новый ТекстовыйДокумент();
- ТекстовыйДокумент.УстановитьТекст(НоваяСтрокаXML);
- ТекстовыйДокумент.Записать(ПутьФайлаКонфигурации, КодировкаТекста.UTF8);
+ РегулярноеВыражение = РегуляркаПоискаВерсии(ИмяТегаСВерсией);
+ НоваяСтрокаXML = РегулярноеВыражение.Заменить(СтрокаXML, ШаблонПодстановки);
-КонецПроцедуры
+ РегулярноеВыражение = РегуляркаПоискаПустойВерсии(ИмяТегаСВерсией);
+ Результат = РегулярноеВыражение.Заменить(НоваяСтрокаXML, ШаблонПодстановкиДляПустойВерсии);
+ Возврат СтрЗаменить(Результат, " ", " "); // 2 пробела на один пробел
+
+КонецФункции
Функция ЗаписатьНомерСборки(ПутьФайлаКонфигурации, НомерСборки)
+ Возврат ЗаписатьНомерСборкиВХмл(ПутьФайлаКонфигурации, НомерСборки, "Version");
+КонецФункции
- Лог.Отладка("устанавливаю номер сборки %1 в исходниках конфигурации %2", НомерСборки, ПутьФайлаКонфигурации);
+Функция ЗаписатьНомерСборкиВнешнегоФайла(ПутьФайлаКонфигурации, НомерСборки)
+ Возврат ЗаписатьНомерСборкиВХмл(ПутьФайлаКонфигурации, НомерСборки, "Comment");
+КонецФункции
+
+Функция ЗаписатьНомерСборкиВХмл(ПутьФайлаКонфигурации, НомерСборки, ИмяТегаСВерсией)
+
+ Лог.Отладка("устанавливаю номер сборки %1 в исходниках %2", НомерСборки, ПутьФайлаКонфигурации);
СтрокаXML = ПрочитатьФайл(ПутьФайлаКонфигурации);
- ПредыдущаяВерсия = ВерсияКонфигурацииПоХМЛ(СтрокаXML);
+ ПредыдущаяВерсия = ВерсияПоХМЛ(СтрокаXML, ИмяТегаСВерсией);
+ Лог.Отладка("Найдена предыдущая версия %1", ПредыдущаяВерсия);
ВерсияСоСборкой = ВерсияСоСборкой(ПредыдущаяВерсия, НомерСборки);
- ИзменитьНомерВерсии(ПутьФайлаКонфигурации, СтрокаXML, ВерсияСоСборкой);
+ НоваяСтрокаXML = ИзменитьВерсиюВХМЛ(СтрокаXML, ВерсияСоСборкой, ИмяТегаСВерсией);
+ ЗаписатьФайл(ПутьФайлаКонфигурации, НоваяСтрокаXML);
Возврат ПредыдущаяВерсия;
@@ -163,6 +260,9 @@
Функция ВерсияСоСборкой(Знач НомерВерсии, Знач НомерСборки)
+ Если ПустаяСтрока(НомерВерсии) Тогда
+ Возврат "1.0.0." + НомерСборки;
+ КонецЕсли;
ШаблонПодстановки = СтрШаблон("$1.%1", НомерСборки);
РегулярноеВыражение = Новый РегулярноеВыражение("(\d+.\d+.\d+).(\d+)");
Возврат РегулярноеВыражение.Заменить(НомерВерсии, ШаблонПодстановки);
@@ -172,7 +272,7 @@
Функция ФайлыКонфигураций(Знач ПутьФайлаИлиКаталогИсходников, Знач ИскатьВПодкаталогах = Истина)
Результат = Новый Массив;
- ИмяФайлаКонфигурации = "Configuration.xml";
+ ИмяФайлаКонфигурации = ИмяФайлаКонфигурации();
Файл = Новый Файл(ПутьФайлаИлиКаталогИсходников);
Если Файл.ЭтоКаталог() Тогда
@@ -191,15 +291,86 @@
ИначеЕсли НРег(Файл.Имя) = НРег(ИмяФайлаКонфигурации) Тогда
Результат.Добавить(Файл);
Возврат Результат;
- ИначеЕсли ИскатьВПодкаталогах Тогда
- Возврат НайтиФайлы(ПутьФайлаИлиКаталогИсходников, ИмяФайлаКонфигурации, Истина);
Иначе
+// todo выбрасывать ли исключение, если не нашли подходящих файлов ?
ВызватьИсключение СтрШаблон("Переданный путь должен указывать на файл конфигурации %1 или на каталог, его содержащий - %2",
ИмяФайлаКонфигурации, ПутьФайлаИлиКаталогИсходников);
КонецЕсли;
КонецФункции
+Функция ВнешниеФайлы(Знач ПутьФайлаИлиКаталогИсходников, Знач ИскатьВПодкаталогах = Истина)
+ Результат = Новый Массив;
+ ИгнорируемыеВнешниеФайлы = ИгнорируемыеВнешниеФайлы();
+ Файл = Новый Файл(ПутьФайлаИлиКаталогИсходников);
+ Если Файл.ЭтоФайл() Тогда
+ Если Файл.Расширение = ".xml" И ИгнорируемыеВнешниеФайлы.Получить(НРег(Файл.Имя)) = Неопределено Тогда
+ Лог.Отладка("Нашли xml-файл %1", Файл.ПолноеИмя);
+ Результат.Добавить(Файл);
+ КонецЕсли;
+ Возврат Результат;
+ ИначеЕсли Файл.ЭтоКаталог() Тогда
+ ХмлФайлы = НайтиВнешниеХМЛФайлыВКаталогеИПодкаталогах(Файл.ПолноеИмя, ИскатьВПодкаталогах, ИгнорируемыеВнешниеФайлы);
+ Для Каждого ХмлФайл Из ХмлФайлы Цикл
+ Результат.Добавить(ХмлФайл);
+ КонецЦикла;
+ Лог.Отладка("Нашли внешние xml-файлы. Количество %1", Результат.Количество());
+ Возврат Результат;
+// todo выбрасывать ли исключение, если не нашли подходящих файлов ?
+ // Иначе
+ // ВызватьИсключение СтрШаблон("Переданный путь должен указывать на внешний файл 1С или на каталог, его содержащий - %1",
+ // ПутьФайлаИлиКаталогИсходников);
+ КонецЕсли;
+ Возврат Результат;
+КонецФункции
+
+// поиск по подкаталог без рекурсии, только если на текущем уровне не найдено ни одного хмл-файла
+Функция НайтиВнешниеХМЛФайлыВКаталогеИПодкаталогах(Знач ПутьКаталога, Знач ИскатьВПодкаталогах, Знач ИгнорируемыеВнешниеФайлы)
+ Результат = Новый Массив;
+ ХмлФайлы = НайтиФайлы(ПутьКаталога, "*.xml");
+ Для Каждого Файл Из ХмлФайлы Цикл
+ Если ИгнорируемыеВнешниеФайлы.Получить(НРег(Файл.Имя)) = Неопределено Тогда
+ Лог.Отладка("Нашли xml-файл %1", Файл.ПолноеИмя);
+ Результат.Добавить(Файл);
+ КонецЕсли;
+ КонецЦикла;
+ Лог.Отладка("Нашли внешние xml-файлы. Количество %1 в каталоге %2", Результат.Количество(), ПутьКаталога);
+
+ Если Не ЗначениеЗаполнено(Результат) И ИскатьВПодкаталогах Тогда
+ ВсеФайлы = НайтиФайлы(ПутьКаталога, ПолучитьМаскуВсеФайлы());
+ Для Каждого Файл Из ВсеФайлы Цикл
+ Если Не Файл.ЭтоКаталог() Тогда
+ Продолжить;
+ КонецЕсли;
+ ХмлФайлы = НайтиВнешниеХМЛФайлыВКаталогеИПодкаталогах(Файл.ПолноеИмя, ИскатьВПодкаталогах, ИгнорируемыеВнешниеФайлы);
+ Для Каждого ХмлФайл Из ХмлФайлы Цикл
+ Результат.Добавить(ХмлФайл);
+ КонецЦикла;
+ КонецЦикла;
+ КонецЕсли;
+ Возврат Результат;
+КонецФункции
+
+Функция РегуляркаПоискаВерсии(ИмяТегаСВерсией)
+ Шаблон = СтрШаблон("<%1>(.*)(\d+.\d+.\d+.\d+)(.*)<\/%1>", ИмяТегаСВерсией);
+ Возврат Новый РегулярноеВыражение(Шаблон);
+КонецФункции
+
+Функция РегуляркаПоискаПустойВерсии(ИмяТегаСВерсией)
+ Возврат Новый РегулярноеВыражение(СтрШаблон("(<%1/>)", ИмяТегаСВерсией));;
+КонецФункции
+
+Функция ИмяФайлаКонфигурации()
+ Возврат "Configuration.xml";
+КонецФункции
+
+Функция ИгнорируемыеВнешниеФайлы()
+ Результат = Новый Соответствие();
+ Результат.Вставить(НРег(ИмяФайлаКонфигурации()), ИмяФайлаКонфигурации());
+ Результат.Вставить("configdumpinfo.xml", "ConfigDumpInfo.xml");
+ Возврат Результат;
+КонецФункции
+
Процедура ПолучитьЛог()
Если Лог = Неопределено Тогда
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os"
index ea10dba1..9dcb76db 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\320\260\320\272\320\276\320\262\321\211\320\270\320\272\320\222\320\275\320\265\321\210\320\275\320\270\321\205\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\276\320\272.os"
@@ -51,10 +51,13 @@
КонецПроцедуры
-Процедура Собрать(Знач Путь, Знач КаталогВыгрузки, Знач СтрокаПодключения = "", Знач Пользователь = "",
- Знач Пароль = "", Знач ВерсияПлатформы = "", Знач ТолькоКопировать = Ложь, Знач КлючКэша = Неопределено) Экспорт
+Процедура Собрать(Знач Путь, Знач КаталогВыгрузки, Знач ДанныеПодключения,
+ Знач ТолькоКопировать, Знач КлючКэша, Знач НастройкаИзмененияВерсии) Экспорт
+
Перем КаталогВременнойИБ;
+ СтрокаПодключения = ДанныеПодключения.СтрокаПодключения;
+
ПутьКИсходникам = ОбъединитьПути(ПараметрыСистемы.КорневойПутьПроекта, Путь);
ПапкаИсходников = Новый Файл(ПутьКИсходникам);
@@ -62,7 +65,7 @@
Если ПустаяСтрока(СтрокаПодключения) Тогда
Конфигуратор = Новый УправлениеКонфигуратором();
КаталогВременнойИБ = ВременныеФайлы.НовоеИмяФайла("tmp");
- СоздатьКаталог(КаталогВременнойИБ);
+ СоздатьКаталог(КаталогВременнойИБ); // TODO переделать на ВременныеФайлы
Конфигуратор.СоздатьФайловуюБазу(КаталогВременнойИБ);
СтрокаПодключения = "/F""" + КаталогВременнойИБ + """";
@@ -89,16 +92,18 @@
ЗначенияПараметровСборки.Вставить("inDir", ПутьКИсходникам);
ЗначенияПараметровСборки.Вставить("outDir", КаталогВыгрузки);
ЗначенияПараметровСборки.Вставить("connectionstring", СтрокаПодключения);
- ЗначенияПараметровСборки.Вставить("user", Пользователь);
- ЗначенияПараметровСборки.Вставить("password", Пароль);
- ЗначенияПараметровСборки.Вставить("version", ВерсияПлатформы);
+ ЗначенияПараметровСборки.Вставить("user", ДанныеПодключения.Пользователь);
+ ЗначенияПараметровСборки.Вставить("password", ДанныеПодключения.Пароль);
+ ЗначенияПараметровСборки.Вставить("version", ДанныеПодключения.ВерсияПлатформы);
ЗначенияПараметровСборки.Вставить("name", КлючКэша);
ЗначенияПараметровСборки.Вставить("autoupdate", Истина);
ЗначенияПараметровСборки.Вставить("onlycopy", ТолькоКопировать);
+ ЗначенияПараметровСборки.Вставить("set-version", НастройкаИзмененияВерсии);
+
ЕстьИзмененияДляЗаписи = Ложь;
Лог.Отладка("Начали собирать");
СледитьЗаИзменениямиФайловВРепозиторииИсходников(ЗначенияПараметровСборки, НастройкиИзФайла, , ЕстьИзмененияДляЗаписи);
- Лог.Отладка("Закончили собирать " + ЕстьИзмененияДляЗаписи + " " + ТолькоКопировать);
+ Лог.Отладка("Закончили собирать. найдены изменения " + ЕстьИзмененияДляЗаписи + ", только копирование " + ТолькоКопировать);
Если ЕстьИзмененияДляЗаписи И НЕ ТолькоКопировать Тогда
ЗаписатьВКешФайл(НастройкиИзФайла);
КонецЕсли;
@@ -279,26 +284,30 @@
КонецПроцедуры
Процедура СледитьЗаИзменениямиФайловВРепозиторииИсходников(Значение, КэшПутей, Фильтр = "", ЕстьИзменения = Ложь)
+
Ключ = Строка(Значение.Получить("inDir")) + "" + Строка(Значение.Получить("outDir"));
+ ИмяПравила = Значение.Получить("name");
+ Если ИмяПравила <> Неопределено И Не ПустаяСтрока(ИмяПравила) Тогда
+ Ключ = ИмяПравила;
+ КонецЕсли;
+ Если Не ПустаяСтрока(Фильтр) И Фильтр <> Ключ Тогда
+ Возврат;
+ КонецЕсли;
+
КаталогВходящий = ОбщиеМетоды.ПолныйПуть(Значение.Получить("inDir"));
КаталогИсходящий = ОбщиеМетоды.ПолныйПуть(Значение.Получить("outDir"));
СтрокаПодключения = ОбщиеМетоды.ПереопределитьПолныйПутьВСтрокеПодключения(Значение.Получить("connectionstring"));
Пользователь = Значение.Получить("user");
Пароль = Значение.Получить("password");
ВерсияПлатформы = Значение.Получить("version");
- ИмяПравила = Значение.Получить("name");
АвтоОбновление = Значение.Получить("autoupdate");
ТолькоКопировать = Значение.Получить("onlycopy");
Если ТипЗнч(ТолькоКопировать) <> Тип("Булево") Тогда
ТолькоКопировать = Ложь;
КонецЕсли;
-
- Если ИмяПравила <> Неопределено И Не ПустаяСтрока(ИмяПравила) Тогда
- Ключ = ИмяПравила;
- КонецЕсли;
-
- Если Не ПустаяСтрока(Фильтр) И Фильтр <> Ключ Тогда
- Возврат;
+ НастройкаИзмененияВерсии = Значение.Получить("set-version");
+ Если Не ЗначениеЗаполнено(НастройкаИзмененияВерсии) Тогда
+ НастройкаИзмененияВерсии = Новый Структура;
КонецЕсли;
РежимОдногоКаталога = (ОбщиеМетоды.ПолныйПуть(КаталогВходящий) = ОбщиеМетоды.ПолныйПуть(КаталогИсходящий));
@@ -399,10 +408,10 @@
Кэш.Вставить(Файл.ПолноеИмя, ХэшФайла(Файл));
КонецЕсли;
- Если ОбработкуНашли = Истина И СписокОбработанных.Получить(ПапкаИсходников) <> Неопределено Тогда
+ Если ОбработкуНашли И СписокОбработанных.Получить(ПапкаИсходников) <> Неопределено Тогда
Кэш.Вставить(Файл.ПолноеИмя, ХэшФайла(Файл));
СписокОбработанных.Вставить(Файл.ПолноеИмя, Истина);
- ИначеЕсли ОбработкуНашли = Истина Тогда
+ ИначеЕсли ОбработкуНашли Тогда
РежимВыгрузки = "Каталог";
Если Не ПустаяСтрока(КаталогИсходящий) Тогда
Расширение = Прав(СокрЛП(КаталогИсходящий), 4);
@@ -429,7 +438,9 @@
КаталогВыгрузкиОбработки = КаталогИсходящий;
КонецЕсли;
- ИмяФайлаОбъекта = СобратьФайлВнешнейОбработки(ПапкаИсходников, КаталогВыгрузкиОбработки, СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы);
+ ИмяФайлаОбъекта = СобратьФайлВнешнейОбработки(ПапкаИсходников, КаталогВыгрузкиОбработки,
+ СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы,
+ НастройкаИзмененияВерсии);
КаталогФайл = Новый Файл(ПапкаИсходников);
КаталогВходящийПолныйПуть = Новый Файл(КаталогВходящий).ПолноеИмя;
@@ -723,7 +734,8 @@
КонецПроцедуры
-Функция СобратьФайлВнешнейОбработки(Знач ПутьКИсходникам, Знач КаталогВыгрузки, Знач СтрокаПодключения, Знач Пользователь, Знач Пароль, Знач ВерсияПлатформы)
+Функция СобратьФайлВнешнейОбработки(Знач ПутьКИсходникам, Знач КаталогВыгрузки,
+ Знач СтрокаПодключения, Знач Пользователь, Знач Пароль, Знач ВерсияПлатформы, Знач НастройкаИзмененияВерсии)
Лог.Отладка("Собираю исходники <" + ПутьКИсходникам + ">");
@@ -733,14 +745,35 @@
ИмяФайлаОбъекта = КаталогВыгрузки; // ОбъединитьПути(ТекущийКаталог(), КаталогВыгрузки);
Лог.Отладка("Собираю исходники ИмяФайлаОбъекта <" + ИмяФайлаОбъекта + ">");
- СобратьФайлВнешнейОбработкиИзИсходников(НайденныйФайл[0], ИмяФайлаОбъекта, СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы);
+ БазовыйХмлФайл = НайденныйФайл[0];
+ ИзменитьНомерСборкиВнешнейОбработки(БазовыйХмлФайл.ПолноеИмя, НастройкаИзмененияВерсии);
+
+ СобратьФайлВнешнейОбработкиИзИсходников(БазовыйХмлФайл, ИмяФайлаОбъекта, СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы);
Лог.Отладка("Успешно собран файл " + ИмяФайлаОбъекта);
Возврат ИмяФайлаОбъекта;
-
КонецФункции
-Процедура СобратьФайлВнешнейОбработкиИзИсходников(ПапкаИсходников, ИмяФайлаОбъекта, Знач СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы)
+Процедура ИзменитьНомерСборкиВнешнейОбработки(Знач ПутьИсходников, Знач НастройкиУстановки)
+ НомерСборки = НастройкиУстановки.НомерСборки;
+ Если Не ЗначениеЗаполнено(НомерСборки) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Лог.Информация("Изменяю номер сборки в исходниках внешнего файла 1С на %1", НомерСборки);
+
+ МенеджерВерсийФайлов1С = Новый МенеджерВерсийФайлов1С;
+ СтарыеВерсии = МенеджерВерсийФайлов1С.УстановитьНомерСборкиДляВнешнегоФайла(ПутьИсходников, НомерСборки, НастройкиУстановки);
+
+ Для каждого КлючЗначение Из СтарыеВерсии Цикл
+ Лог.Информация(" Старая версия %1, файл - %2", КлючЗначение.Значение, КлючЗначение.Ключ);
+ КонецЦикла;
+
+КонецПроцедуры
+
+Процедура СобратьФайлВнешнейОбработкиИзИсходников(ПапкаИсходников, ИмяФайлаОбъекта,
+ Знач СтрокаПодключения, Пользователь, Пароль, ВерсияПлатформы)
+
Лог.Отладка("Собираю файл из исходников <" + ПапкаИсходников.ПолноеИмя + "> в файл " + ИмяФайлаОбъекта);
Конфигуратор = Новый УправлениеКонфигуратором();