Skip to content

Commit f86ed9a

Browse files
committed
Merge branch 'release/v0.3'
2 parents 8646e38 + 9e4f41a commit f86ed9a

8 files changed

+258
-67
lines changed

packagedef

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+

2+
Описание.Имя("packman")
3+
.Версия("0.3")
4+
.ЗависитОт("logos")
5+
.ЗависитОт("cmdline")
6+
.ВключитьФайл("src")
7+
.ВключитьФайл("tools/СборИнформацииОМетаданных.epf")
8+
.ВключитьФайл("tools/ПомощникСозданияМанифестаПоставки.epf")
9+
.ИсполняемыйФайл("src/packman.os");

src/packagedef

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
2+
#Использовать v8runner
3+
#Использовать logos
4+
5+
Перем Лог;
6+
7+
///////////////////////////////////////////////////////////////////////////////////////////////////
8+
// Прикладной интерфейс
9+
10+
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
11+
12+
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Создание архива для удобного тиражирования");
13+
14+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-in", "Путь к каталогу дистрибутива");
15+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-name-prefix", "Префикс имени архива, например erp20");
16+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-mdinfo", "Каталог с файлом v8-metadata.info, генерируемым командой make-dist");
17+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-out", "Выходной каталог с архивом");
18+
19+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
20+
21+
КонецПроцедуры
22+
23+
// Выполняет логику команды
24+
//
25+
// Параметры:
26+
// ПараметрыКоманды - Соответствие ключей командной строки и их значений
27+
//
28+
Функция ВыполнитьКоманду(Знач ПараметрыКоманды) Экспорт
29+
30+
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
31+
32+
УправлениеКонфигуратором = ОкружениеСборки.ПолучитьКонфигуратор();
33+
34+
КаталогДляАрхивации = ПараметрыКоманды["-in"];
35+
Если Не ЗначениеЗаполнено(КаталогДляАрхивации) Тогда
36+
КаталогДляАрхивации = ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), ОкружениеСборки.ИмяКаталогаФормированияДистрибутива());
37+
КонецЕсли;
38+
39+
Каталог = Новый Файл(КаталогДляАрхивации);
40+
Если Не Каталог.Существует() Тогда
41+
ВызватьИсключение СтрШаблон("Каталог %1 не существует", КаталогДляАрхивации);
42+
КонецЕсли;
43+
44+
Если ЗначениеЗаполнено(ПараметрыКоманды["-mdinfo"]) Тогда
45+
ФайлМетаданных = Новый Файл(ОбъединитьПути(ПараметрыКоманды["-mdinfo"], ОкружениеСборки.ИмяФайлаИнформацииОМетаданных()));
46+
Иначе
47+
ФайлМетаданных = Новый Файл(ОбъединитьПути(УправлениеКонфигуратором.КаталогСборки(), ОкружениеСборки.ИмяФайлаИнформацииОМетаданных()));
48+
КонецЕсли;
49+
50+
Лог.Отладка("Имя файла метаданных:" + ФайлМетаданных.ПолноеИмя);
51+
Если ФайлМетаданных.Существует() Тогда
52+
ОписаниеМетаданных = ОкружениеСборки.ПрочитатьИнформациюОМетаданных(ФайлМетаданных.ПолноеИмя);
53+
Лог.Информация("Текущая версия конфигурации: " + ОписаниеМетаданных.Версия);
54+
ИмяАрхива = СформироватьИмяАрхива(ПараметрыКоманды["-name-prefix"], ОписаниеМетаданных.Версия);
55+
Иначе
56+
ИмяАрхива = СформироватьИмяАрхива(ПараметрыКоманды["-name-prefix"]);
57+
КонецЕсли;
58+
59+
ВыходнойКаталог = ?(ПустаяСтрока(ПараметрыКоманды["-out"]),УправлениеКонфигуратором.КаталогСборки(),ПараметрыКоманды["-out"]);
60+
АрхивироватьДистрибутив(ВыходнойКаталог, ИмяАрхива, КаталогДляАрхивации);
61+
62+
КонецФункции
63+
64+
Функция СформироватьИмяАрхива(Знач Префикс, Знач Версия = "")
65+
66+
Если Не ЗначениеЗаполнено(Префикс) Тогда
67+
Префикс = ОкружениеСборки.ИмяКаталогаФормированияДистрибутива();
68+
КонецЕсли;
69+
70+
Имя = Префикс;
71+
Если ЗначениеЗаполнено(Версия) Тогда
72+
Имя = Имя + "-" + Версия;
73+
КонецЕсли;
74+
75+
Возврат Имя + ".zip";
76+
77+
КонецФункции // СформироватьИмяАрхива(Знач Префикс, Знач Версия = "")
78+
79+
Процедура АрхивироватьДистрибутив(Знач ВыходнойКаталог, Знач ИмяАрхива, Знач КаталогДляАрхивации)
80+
81+
Лог.Отладка("ВыходнойКаталог = " + ВыходнойКаталог);
82+
Лог.Отладка("ИмяАрхива = " + ИмяАрхива);
83+
Лог.Отладка("КаталогДляАрхивации = " + КаталогДляАрхивации);
84+
85+
ОбъектКаталога = Новый Файл(ВыходнойКаталог);
86+
Если Не ОбъектКаталога.Существует() Тогда
87+
СоздатьКаталог(ОбъектКаталога.ПолноеИмя);
88+
КонецЕсли;
89+
90+
ПолноеИмяАрхива = ОбъединитьПути(ОбъектКаталога.ПолноеИмя, ИмяАрхива);
91+
ЗаписьZIP = Новый ЗаписьZipФайла(ПолноеИмяАрхива);
92+
ЗаписьZIP.Добавить(
93+
ОбъединитьПути(КаталогДляАрхивации, ПолучитьМаскуВсеФайлы()),
94+
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
95+
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
96+
ЗаписьZIP.Записать();
97+
98+
Лог.Информация("Архив: " + ПолноеИмяАрхива + " создан.");
99+
100+
КонецПроцедуры

src/Классы/КомандаВыгрузитьИзХранилища.os

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#Использовать v8runner
33
#Использовать tempfiles
44
#Использовать asserts
5+
#Использовать tool1cd
56

67
Перем Лог;
78
Перем ВФ;
@@ -10,14 +11,14 @@
1011
// Прикладной интерфейс
1112

1213
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
13-
14+
1415
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выгрузка версии из хранилища в рабочую среду");
1516
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "АдресХранилища", "Хранилище конфигурации 1С из которого выполняется сборка");
1617
// TODO с помощью tool1cd можно не применять авторизацию
1718
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-storage-user", "Пользователь хранилища 1С");
1819
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-storage-pwd", "Пароль пользователя хранилища 1С (опционально)");
1920
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-storage-v", "Версия в хранилище, которую включаем в дистрибутив (опционально)");
20-
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-use-tool1cd", "Использовать для чтения хранилища Tool1CD (указывается путь к Tool1CD)");
21+
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-use-tool1cd", "Использовать для чтения хранилища Tool1CD");
2122

2223
Парсер.ДобавитьКоманду(ОписаниеКоманды);
2324

@@ -33,27 +34,31 @@
3334
Параметры = РазобратьПараметры(ПараметрыКоманды);
3435

3536
Попытка
36-
ФайлВерсии = ПолучитьИмяВременногоФайла(".cf");
37-
ВыгрузитьВерсиюИзХранилища(Параметры.АдресХранилища, Параметры.ВерсияХранилища, ФайлВерсии, Параметры.ПользовательХранилища, Параметры.ПарольХранилища);
37+
ФайлВерсии = ПолучитьИмяВременногоФайла(".cf");
38+
Если Параметры.ИспользоватьTool1CD Тогда
39+
ВыгрузитьВерсиюСредствамиTool1CD(Параметры.АдресХранилища, Параметры.ВерсияХранилища, ФайлВерсии);
40+
Иначе
41+
ВыгрузитьВерсиюИзХранилища(Параметры.АдресХранилища, Параметры.ВерсияХранилища, ФайлВерсии, Параметры.ПользовательХранилища, Параметры.ПарольХранилища);
42+
КонецЕсли;
3843

3944
ФайлТест = Новый Файл(ФайлВерсии);
4045
Ожидаем.Что(ФайлТест.Существует(), "Должен существовать выгруженный файл версии");
4146

4247
УправлениеКонфигуратором = ОкружениеСборки.ПолучитьКонфигуратор();
4348
ЗагрузитьКонфигурациюВБазуСборки(УправлениеКонфигуратором, ФайлВерсии);
4449
Исключение
45-
ВФ.Удалить();
46-
ВызватьИсключение;
50+
ВФ.Удалить();
51+
ВызватьИсключение;
4752
КонецПопытки;
4853

49-
ВФ.Удалить();
54+
ВФ.Удалить();
5055

5156
КонецФункции
5257

5358
Процедура ЗагрузитьКонфигурациюВБазуСборки(Знач УправлениеКонфигуратором, Знач ФайлВерсии) Экспорт
5459
Лог.Информация("Загружаю версию во временную базу");
55-
УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлВерсии, Истина);
56-
Лог.Информация(УправлениеКонфигуратором.ВыводКоманды());
60+
УправлениеКонфигуратором.ЗагрузитьКонфигурациюИзФайла(ФайлВерсии, Истина);
61+
Лог.Информация(УправлениеКонфигуратором.ВыводКоманды());
5762
КонецПроцедуры
5863

5964
// экспортная для целей тестирования
@@ -69,6 +74,7 @@
6974
Результат.Вставить("ПользовательХранилища", ПараметрыКоманды["-storage-user"]);
7075
Результат.Вставить("ПарольХранилища", ПараметрыКоманды["-storage-pwd"]);
7176
Результат.Вставить("ВерсияХранилища", ПараметрыКоманды["-storage-v"]);
77+
Результат.Вставить("ИспользоватьTool1CD", ПараметрыКоманды["-use-tool1cd"]);
7278

7379
Возврат Результат;
7480

@@ -80,7 +86,7 @@
8086
Знач ПользовательХранилища = Неопределено,
8187
Знач ПарольХранилища = Неопределено) Экспорт
8288

83-
ВременныйКаталог = "";
89+
ВременныйКаталог = "";
8490
Конфигуратор = ПолучитьКонфигуратор(ВременныйКаталог);
8591

8692
Лог.Отладка("Выгружаю версию из хранилища");
@@ -98,18 +104,30 @@
98104
Лог.Отладка("Удален временный каталог: " + ВременныйКаталог);
99105
КонецПроцедуры
100106

107+
Процедура ВыгрузитьВерсиюСредствамиTool1CD(Знач КаталогХранилища, Знач ВерсияХранилища, Знач ФайлВерсии) Экспорт
108+
109+
ФайлХранилища = ОбъединитьПути(КаталогХранилища, "1cv8ddb.1CD");
110+
Чтение = Новый ЧтениеХранилищаКонфигурации;
111+
Если ВерсияХранилища = Неопределено Тогда
112+
ВерсияХранилища = 0;
113+
КонецЕсли;
114+
115+
Чтение.ВыгрузитьВерсиюКонфигурации(ФайлХранилища, ФайлВерсии, ВерсияХранилища);
116+
117+
КонецПроцедуры
118+
101119
Функция ПолучитьКонфигуратор(РабочийКаталог = "")
102-
103-
Если ПустаяСтрока(РабочийКаталог) Тогда
104-
РабочийКаталог = ВФ.СоздатьКаталог();
105-
Лог.Отладка("Создан временный каталог: " + РабочийКаталог);
106-
КонецЕсли;
107-
108-
Конфигуратор = Новый УправлениеКонфигуратором();
120+
121+
Если ПустаяСтрока(РабочийКаталог) Тогда
122+
РабочийКаталог = ВФ.СоздатьКаталог();
123+
Лог.Отладка("Создан временный каталог: " + РабочийКаталог);
124+
КонецЕсли;
125+
126+
Конфигуратор = Новый УправлениеКонфигуратором();
109127
Конфигуратор.КаталогСборки(РабочийКаталог);
110-
111-
Возврат Конфигуратор;
112-
128+
129+
Возврат Конфигуратор;
130+
113131
КонецФункции // ПолучитьКонфигуратор()
114132

115133
//////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)