Skip to content

Commit c563210

Browse files
authored
Merge pull request #67 from dmpas/feature/issue66-install-l
Fix #66: локальная установка в локальный каталог.
2 parents c202532 + 75a6ec2 commit c563210

File tree

2 files changed

+65
-14
lines changed

2 files changed

+65
-14
lines changed

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

Lines changed: 43 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@
33

44
Перем Лог;
55

6+
// Массив каталогов в порядке возрастания приоритета
7+
Перем МассивКаталоговПоискаБиблиотек;
8+
69
Перем УстановленныеПакеты;
710

811
Функция ПакетУстановлен(Знач ОписаниеЗависимости) Экспорт
912

13+
Перем УстановленныеПакеты;
14+
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
15+
1016
ПакетУстановлен = УстановленныеПакеты.Получить(ОписаниеЗависимости.ИмяПакета) <> Неопределено;
1117

1218
КаталогБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system"));
@@ -34,32 +40,57 @@
3440

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

37-
КаталогБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system"));
38-
Лог.Отладка("КаталогБиблиотек " + КаталогБиблиотек);
39-
УстановленныеПакеты = Новый Соответствие;
40-
41-
НайденныеФайлы = НайтиФайлы(КаталогБиблиотек, ПолучитьМаскуВсеФайлы());
42-
Для Каждого ФайлКаталога Из НайденныеФайлы Цикл
43-
Если ФайлКаталога.ЭтоКаталог() Тогда
44-
ДобавитьУстановленныйПакет(ФайлКаталога);
45-
КонецЕсли;
43+
Для Каждого КаталогБиблиотек Из МассивКаталоговПоискаБиблиотек Цикл
44+
45+
Лог.Отладка("КаталогБиблиотек " + КаталогБиблиотек);
46+
УстановленныеПакеты = Новый Соответствие;
47+
48+
НайденныеФайлы = НайтиФайлы(КаталогБиблиотек, ПолучитьМаскуВсеФайлы());
49+
Для Каждого ФайлКаталога Из НайденныеФайлы Цикл
50+
Если ФайлКаталога.ЭтоКаталог() Тогда
51+
52+
// ДобавитьУстановленныйПакет заменит уже добавленный пакет при совпадении имён
53+
// Соответственно, более поздние каталоги будут иметь приоритет
54+
ДобавитьУстановленныйПакет(ФайлКаталога);
55+
56+
КонецЕсли;
57+
КонецЦикла;
58+
4659
КонецЦикла;
4760

4861
КонецПроцедуры
4962

5063
Функция ПолучитьУстановленныеПакеты() Экспорт
64+
65+
Если УстановленныеПакеты = Неопределено Тогда
66+
Обновить();
67+
КонецЕсли;
68+
5169
Возврат УстановленныеПакеты;
70+
5271
КонецФункции
5372

5473
Процедура Инициализация()
5574

5675
Лог = Логирование.ПолучитьЛог("oscript.app.opm");
57-
//Лог.УстановитьУровень(УровниЛога.Отладка);
58-
59-
Обновить();
76+
МассивКаталоговПоискаБиблиотек = Новый Массив;
77+
78+
КаталогСистемныхБиблиотек = ОбъединитьПути(
79+
КаталогПрограммы(),
80+
ПолучитьЗначениеСистемнойНастройки("lib.system")
81+
);
82+
83+
МассивКаталоговПоискаБиблиотек.Добавить(КаталогСистемныхБиблиотек);
6084

6185
КонецПроцедуры
6286

87+
// Добавляет каталог в список, по которому выполняется поиск библиотек
88+
Процедура ДобавитьКаталогБиблиотек(Знач Каталог) Экспорт
89+
90+
МассивКаталоговПоискаБиблиотек.Добавить(Каталог);
91+
92+
КонецПроцедуры
93+
6394
Процедура ДобавитьУстановленныйПакет(Знач ФайлКаталога)
6495

6596
ПутьКФайлуМетаданных = ОбъединитьПути(ФайлКаталога.ПолноеИмя, КонстантыOpm.ИмяФайлаМетаданныхПакета);

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
Перем мЗависимостиВРаботе;
88
Перем ЭтоWindows;
99
Перем мРежимУстановкиПакетов;
10+
Перем КэшУстановленныхПакетов;
1011

1112
Процедура УстановитьПакетИзАрхива(Знач ФайлАрхива) Экспорт
1213

@@ -137,7 +138,7 @@
137138
КонецПроцедуры
138139

139140
Процедура ОбновитьУстановленныеПакеты() Экспорт
140-
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов;
141+
КэшУстановленныхПакетов = ПолучитьУстановленныеПакеты();
141142
УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();
142143
Для Каждого КлючИЗначение Из УстановленныеПакеты Цикл
143144
ОбновитьПакетИзОблака(КлючИЗначение.Ключ);
@@ -197,7 +198,26 @@
197198
КонецПроцедуры
198199

199200
Функция ПолучитьУстановленныеПакеты()
200-
Возврат Новый КэшУстановленныхПакетов();
201+
202+
Если КэшУстановленныхПакетов = Неопределено Тогда
203+
204+
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов();
205+
206+
Если мРежимУстановкиПакетов = РежимУстановкиПакетов.Локально Тогда
207+
208+
ПутьККаталогуЛокальнойУстановки = ОбъединитьПути(
209+
ТекущийКаталог(),
210+
КонстантыOpm.ЛокальныйКаталогУстановкиПакетов
211+
);
212+
213+
КэшУстановленныхПакетов.ДобавитьКаталогБиблиотек(ПутьККаталогуЛокальнойУстановки);
214+
215+
КонецЕсли;
216+
217+
КонецЕсли;
218+
219+
Возврат КэшУстановленныхПакетов;
220+
201221
КонецФункции
202222

203223
Процедура СкачатьИУстановитьПакетПоОписанию(Знач ОписаниеПакета)

0 commit comments

Comments
 (0)