Skip to content

Commit 308d062

Browse files
committed
Merge branch 'develop'
2 parents f9408ec + f92c0ce commit 308d062

16 files changed

+524
-68
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
oscript_modules/
2-
test-reports/
2+
test-reports/
3+
4+
*.ospx

packagedef

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,42 @@
11

2+
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
3+
4+
УдалитьФайлы(ОбъединитьПути(РабочийКаталог, "oscript_modules"), "*.*");
5+
6+
СистемнаяИнформация = Новый СистемнаяИнформация;
7+
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
8+
Если ЭтоWindows Тогда
9+
ИмяУтилиты = "opm.bat";
10+
Иначе
11+
ИмяУтилиты = "opm";
12+
КонецЕсли;
13+
14+
СтрокаЗапуска = СтрШаблон("%1 install -l", ИмяУтилиты);
15+
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог);
16+
Процесс.Запустить();
17+
Процесс.ОжидатьЗавершения();
18+
19+
Если Процесс.КодВозврата <> 0 Тогда
20+
ВызватьИсключение "Ошибка сборки пакета";
21+
КонецЕсли;
22+
23+
КонецПроцедуры
24+
225
ПутьКСценариюКонстант = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "КонстантыOpm.os");
326
Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант);
427

528
Описание.Имя("opm")
629
.Версия(Константы_ЛокальнаяВерсия.ВерсияПродукта)
7-
.ЗависитОт("fs", "0.3")
8-
.ЗависитОт("asserts")
9-
.ЗависитОт("logos")
10-
.ЗависитОт("cmdline")
11-
.ЗависитОт("tempfiles")
12-
.ЗависитОт("1testrunner")
13-
.ЗависитОт("gitrunner", "1.4.0")
30+
.ВерсияСреды("1.0.19")
31+
.ЗависитОт("fs", "0.4.1")
32+
.ЗависитОт("asserts", "0.4.0")
33+
.ЗависитОт("json", "1.0.1")
34+
.ЗависитОт("fluent", "0.2.0")
35+
.ЗависитОт("logos", "1.0.0")
36+
.ЗависитОт("cmdline", "0.6.2")
37+
.ЗависитОт("tempfiles", "0.2.2")
38+
.ЗависитОт("gitrunner", "1.5.0")
1439
.ВключитьФайл("src")
40+
.ВключитьФайл("oscript_modules")
1541
.ОпределяетКласс("ОписаниеПакета", "src/Классы/ОписаниеПакета.os")
1642
.ИсполняемыйФайл("src/opm.os");

src/Классы/Зеркало.os

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
Перем СерверУдаленногоХранилища Экспорт;
22
Перем ПутьВХранилище Экспорт;
3+
Перем Порт Экспорт;
34

45
Перем Соединение;
56

@@ -9,15 +10,16 @@
910
Возврат Соединение;
1011
КонецЕсли;
1112

13+
Порт = ?(Порт = Неопределено, 80, Порт);
1214
НастройкиПрокси = НастройкиПриложенияOpm.Получить().Прокси;
1315
Если НастройкиПрокси.ИспользоватьПрокси Тогда
1416
Прокси = Новый ИнтернетПрокси(НастройкиПрокси.ПроксиПоУмолчанию);
1517
Если Не НастройкиПрокси.ПроксиПоУмолчанию Тогда
1618
Прокси.Установить("http",НастройкиПрокси.Сервер,НастройкиПрокси.Порт,НастройкиПрокси.Пользователь,НастройкиПрокси.Пароль,НастройкиПрокси.ИспользоватьАутентификациюОС);
1719
КонецЕсли;
18-
Соединение = Новый HTTPСоединение(СерверУдаленногоХранилища,,,,Прокси);
20+
Соединение = Новый HTTPСоединение(СерверУдаленногоХранилища, Порт,,,Прокси);
1921
Иначе
20-
Соединение = Новый HTTPСоединение(СерверУдаленногоХранилища);
22+
Соединение = Новый HTTPСоединение(СерверУдаленногоХранилища, Порт);
2123
КонецЕсли;
2224

2325
Возврат Соединение;

src/Классы/КомандаOpm_Install.os

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef.");
77
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-all", "Установить все пакеты, зарегистрированные в хабе");
88
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-f", "Указать файл из которого нужно установить пакет");
9+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-dest", "Переопределить стандартный каталог в который устанавливаются пакеты");
910
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-l", "Установить пакеты в локальный каталог oscript_modules");
1011
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета");
1112
Парсер.ДобавитьКоманду(ОписаниеКоманды);
@@ -27,9 +28,18 @@
2728
Установщик = Новый УстановкаПакета;
2829

2930
Если ЗначенияПараметров["-l"] Тогда
31+
Если ЗначениеЗаполнено(ЗначенияПараметров["-dest"]) Тогда
32+
Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы());
33+
Лог.Предупреждение("При локальной установке параметр -dest игнорируется");
34+
КонецЕсли;
3035
Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально);
3136
Иначе
3237
Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Глобально);
38+
39+
Если ЗначениеЗаполнено(ЗначенияПараметров["-dest"]) Тогда
40+
Установщик.УстановитьЦелевойКаталог(ЗначенияПараметров["-dest"]);
41+
КонецЕсли;
42+
3343
КонецЕсли;
3444

3545
Если ЗначенияПараметров["-all"] Тогда

src/Классы/КомандаOpm_List.os

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system");
3737
ТекстСообщения = СтрШаблон("Пакеты в системном каталоге библиотек <%1>:", ПутьККаталогуПакетов);
3838

39-
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов();
39+
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов(ПутьККаталогуПакетов);
4040
УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();
4141
КонецЕсли;
4242

@@ -46,9 +46,13 @@
4646

4747
Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл
4848
СтрокаСообщения = УстановленныйПакет.Ключ;
49-
Если ТипЗнч(УстановленныйПакет.Значение) = Тип("ОписаниеПакета") Тогда
50-
ОписаниеПакета = УстановленныйПакет.Значение;
51-
СтрокаСообщения = СтрокаСообщения + "@" + ОписаниеПакета.Свойства().Версия;
49+
Если ТипЗнч(УстановленныйПакет.Значение) = Тип("Структура") Тогда
50+
ОписаниеПакета = УстановленныйПакет.Значение.МетаданныеПакета;
51+
Если ТипЗнч(ОписаниеПакета) = Тип("Булево") Тогда
52+
// @deprecated
53+
Иначе
54+
СтрокаСообщения = СтрокаСообщения + "@" + ОписаниеПакета.Свойства().Версия;
55+
КонецЕсли;
5256
КонецЕсли;
5357
Сообщить(СтрокаСообщения);
5458
КонецЦикла;

src/Классы/КэшПакетовХаба.os

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,14 @@
77

88
Процедура Обновить() Экспорт
99

10+
ПакетыХаба = Новый Соответствие;
1011
УстановкаПакета = Новый Установкапакета();
11-
Ответ = Зеркала.ПолучитьРесурс("list.txt");
12-
13-
Если Ответ = Неопределено Тогда
14-
ТекстИсключения = СтрШаблон("Ошибка подключения");
15-
ВызватьИсключение ТекстИсключения;
16-
КонецЕсли;
12+
Репо = Новый Репо();
13+
СоответствиеПакетов = Репо.ПолучитьПакеты();
14+
Для каждого КлючЗначение из СоответствиеПакетов Цикл
15+
ПакетыХаба.Вставить(КлючЗначение.Ключ, Истина);
16+
КонецЦикла;
1717

18-
ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
19-
Ответ.Закрыть();
20-
21-
ПакетыХаба = Новый Соответствие;
22-
ТекстовыйДокумент = Новый ТекстовыйДокумент;
23-
ТекстовыйДокумент.УстановитьТекст(ТекстОтвета);
24-
КоличествоПакетовВХабе = ТекстовыйДокумент.КоличествоСтрок();
25-
Для НомерСтроки = 1 По КоличествоПакетовВХабе Цикл
26-
ПакетыХаба.Вставить(СокрЛП(ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки)), Истина);
27-
КонецЦикла;
28-
2918
КонецПроцедуры
3019

3120
Функция ЭтоПакетХаба(Знач ИмяПакета) Экспорт

src/Классы/КэшУстановленныхПакетов.os

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11

2+
#Использовать fs
23
#Использовать logos
34

45
Перем Лог;
@@ -8,19 +9,20 @@
89

910
Перем УстановленныеПакеты;
1011

11-
Функция ПакетУстановлен(Знач ОписаниеЗависимости) Экспорт
12+
Функция ПакетУстановлен(Знач ОписаниеЗависимости, Знач КаталогПоискаБиблиотек = "") Экспорт
1213

1314
Перем УстановленныеПакеты;
1415
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
16+
17+
ДанныеПакета = УстановленныеПакеты.Получить(ОписаниеЗависимости.ИмяПакета);
18+
ПакетУстановлен = ДанныеПакета <> Неопределено;
19+
Если ПакетУстановлен И НЕ ПустаяСтрока(КаталогПоискаБиблиотек) Тогда
20+
КаталогБиблиотекПакета = Новый Файл(ОбъединитьПути(ДанныеПакета.КаталогПакета, "..")).ПолноеИмя;
21+
ПакетУстановлен = КаталогБиблиотекПакета = КаталогПоискаБиблиотек;
22+
КонецЕсли;
1523

16-
ПакетУстановлен = УстановленныеПакеты.Получить(ОписаниеЗависимости.ИмяПакета) <> Неопределено;
24+
ПутьКФайлуМетаданных = ПолучитьПутьКФайлуМетаданныхБиблиотеки(ОписаниеЗависимости.ИмяПакета);
1725

18-
КаталогБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system"));
19-
ПутьКФайлуМетаданных = ОбъединитьПути(
20-
КаталогБиблиотек,
21-
ОписаниеЗависимости.ИмяПакета,
22-
КонстантыOpm.ИмяФайлаМетаданныхПакета
23-
);
2426
ФайлМетаданных = Новый Файл(ПутьКФайлуМетаданных);
2527
Если ФайлМетаданных.Существует() Тогда
2628
МетаОписаниеПакета = ПрочитатьМетаданныеПакета(ПутьКФайлуМетаданных);
@@ -33,17 +35,19 @@
3335

3436
УстановленаКорректнаяВерсия = ОписаниеЗависимости.МинимальнаяВерсия = Неопределено
3537
ИЛИ РаботаСВерсиями.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия) >= 0;
38+
39+
Лог.Отладка("Пакет установлен: " + ПакетУстановлен);
3640
Лог.Отладка("Установлена корректная версия: " + УстановленаКорректнаяВерсия);
3741
Возврат ПакетУстановлен И УстановленаКорректнаяВерсия;
3842

3943
КонецФункции
4044

4145
Процедура Обновить() Экспорт
4246

47+
УстановленныеПакеты = Новый Соответствие;
4348
Для Каждого КаталогБиблиотек Из МассивКаталоговПоискаБиблиотек Цикл
4449

4550
Лог.Отладка("КаталогБиблиотек " + КаталогБиблиотек);
46-
УстановленныеПакеты = Новый Соответствие;
4751

4852
НайденныеФайлы = НайтиФайлы(КаталогБиблиотек, ПолучитьМаскуВсеФайлы());
4953
Для Каждого ФайлКаталога Из НайденныеФайлы Цикл
@@ -81,7 +85,8 @@
8185
);
8286

8387
МассивКаталоговПоискаБиблиотек.Добавить(КаталогСистемныхБиблиотек);
84-
88+
ДобавитьКаталогБиблиотек("./" + КонстантыOpm.ЛокальныйКаталогУстановкиПакетов);
89+
8590
КонецПроцедуры
8691

8792
// Добавляет каталог в список, по которому выполняется поиск библиотек
@@ -102,7 +107,11 @@
102107
МетаОписаниеПакета = Истина;
103108
КонецЕсли;
104109

105-
УстановленныеПакеты.Вставить(ФайлКаталога.Имя, МетаОписаниеПакета);
110+
СтруктураДанных = Новый Структура();
111+
СтруктураДанных.Вставить("МетаданныеПакета", МетаОписаниеПакета);
112+
СтруктураДанных.Вставить("КаталогПакета", ФайлКаталога.ПолноеИмя);
113+
114+
УстановленныеПакеты.Вставить(ФайлКаталога.Имя, СтруктураДанных);
106115

107116
КонецПроцедуры
108117

@@ -125,4 +134,42 @@
125134

126135
КонецФункции
127136

128-
Инициализация();
137+
Функция ПолучитьПутьКФайлуМетаданныхБиблиотеки(ИмяПакета) Экспорт
138+
139+
ПутьКФайлуМетаданных = "";
140+
Для Каждого КаталогБиблиотек Из МассивКаталоговПоискаБиблиотек Цикл
141+
ВремПутьКФайлуМетаданных = ОбъединитьПути(
142+
КаталогБиблиотек,
143+
ИмяПакета,
144+
КонстантыOpm.ИмяФайлаМетаданныхПакета
145+
);
146+
147+
Лог.Отладка(Новый Файл(ВремПутьКФайлуМетаданных).ПолноеИмя);
148+
Если ФС.ФайлСуществует(ВремПутьКФайлуМетаданных) Тогда
149+
ПутьКФайлуМетаданных = ВремПутьКФайлуМетаданных;
150+
КонецЕсли;
151+
КонецЦикла;
152+
153+
Возврат ПутьКФайлуМетаданных;
154+
155+
КонецФункции
156+
157+
Процедура ПриСозданииОбъекта(КаталогПоискаБиблиотек = "")
158+
159+
Лог = Логирование.ПолучитьЛог("oscript.app.opm");
160+
МассивКаталоговПоискаБиблиотек = Новый Массив;
161+
162+
Если ЗначениеЗаполнено(КаталогПоискаБиблиотек) Тогда
163+
МассивКаталоговПоискаБиблиотек.Добавить(КаталогПоискаБиблиотек);
164+
Иначе
165+
КаталогСистемныхБиблиотек = ОбъединитьПути(
166+
КаталогПрограммы(),
167+
ПолучитьЗначениеСистемнойНастройки("lib.system")
168+
);
169+
170+
МассивКаталоговПоискаБиблиотек.Добавить(КаталогСистемныхБиблиотек);
171+
ДобавитьКаталогБиблиотек("./" + КонстантыOpm.ЛокальныйКаталогУстановкиПакетов);
172+
КонецЕсли;
173+
174+
КонецПроцедуры
175+

0 commit comments

Comments
 (0)