|
1 | 1 |
|
| 2 | +#Использовать fs |
2 | 3 | #Использовать logos |
3 | 4 |
|
4 | 5 | Перем Лог; |
|
8 | 9 |
|
9 | 10 | Перем УстановленныеПакеты; |
10 | 11 |
|
11 | | -Функция ПакетУстановлен(Знач ОписаниеЗависимости) Экспорт |
| 12 | +Функция ПакетУстановлен(Знач ОписаниеЗависимости, Знач КаталогПоискаБиблиотек = "") Экспорт |
12 | 13 |
|
13 | 14 | Перем УстановленныеПакеты; |
14 | 15 | УстановленныеПакеты = ПолучитьУстановленныеПакеты(); |
| 16 | + |
| 17 | + ДанныеПакета = УстановленныеПакеты.Получить(ОписаниеЗависимости.ИмяПакета); |
| 18 | + ПакетУстановлен = ДанныеПакета <> Неопределено; |
| 19 | + Если ПакетУстановлен И НЕ ПустаяСтрока(КаталогПоискаБиблиотек) Тогда |
| 20 | + КаталогБиблиотекПакета = Новый Файл(ОбъединитьПути(ДанныеПакета.КаталогПакета, "..")).ПолноеИмя; |
| 21 | + ПакетУстановлен = КаталогБиблиотекПакета = КаталогПоискаБиблиотек; |
| 22 | + КонецЕсли; |
15 | 23 |
|
16 | | - ПакетУстановлен = УстановленныеПакеты.Получить(ОписаниеЗависимости.ИмяПакета) <> Неопределено; |
| 24 | + ПутьКФайлуМетаданных = ПолучитьПутьКФайлуМетаданныхБиблиотеки(ОписаниеЗависимости.ИмяПакета); |
17 | 25 |
|
18 | | - КаталогБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system")); |
19 | | - ПутьКФайлуМетаданных = ОбъединитьПути( |
20 | | - КаталогБиблиотек, |
21 | | - ОписаниеЗависимости.ИмяПакета, |
22 | | - КонстантыOpm.ИмяФайлаМетаданныхПакета |
23 | | - ); |
24 | 26 | ФайлМетаданных = Новый Файл(ПутьКФайлуМетаданных); |
25 | 27 | Если ФайлМетаданных.Существует() Тогда |
26 | 28 | МетаОписаниеПакета = ПрочитатьМетаданныеПакета(ПутьКФайлуМетаданных); |
|
33 | 35 |
|
34 | 36 | УстановленаКорректнаяВерсия = ОписаниеЗависимости.МинимальнаяВерсия = Неопределено |
35 | 37 | ИЛИ РаботаСВерсиями.СравнитьВерсии(УстановленнаяВерсия, ОписаниеЗависимости.МинимальнаяВерсия) >= 0; |
| 38 | + |
| 39 | + Лог.Отладка("Пакет установлен: " + ПакетУстановлен); |
36 | 40 | Лог.Отладка("Установлена корректная версия: " + УстановленаКорректнаяВерсия); |
37 | 41 | Возврат ПакетУстановлен И УстановленаКорректнаяВерсия; |
38 | 42 |
|
39 | 43 | КонецФункции |
40 | 44 |
|
41 | 45 | Процедура Обновить() Экспорт |
42 | 46 |
|
| 47 | + УстановленныеПакеты = Новый Соответствие; |
43 | 48 | Для Каждого КаталогБиблиотек Из МассивКаталоговПоискаБиблиотек Цикл |
44 | 49 |
|
45 | 50 | Лог.Отладка("КаталогБиблиотек " + КаталогБиблиотек); |
46 | | - УстановленныеПакеты = Новый Соответствие; |
47 | 51 |
|
48 | 52 | НайденныеФайлы = НайтиФайлы(КаталогБиблиотек, ПолучитьМаскуВсеФайлы()); |
49 | 53 | Для Каждого ФайлКаталога Из НайденныеФайлы Цикл |
|
81 | 85 | ); |
82 | 86 |
|
83 | 87 | МассивКаталоговПоискаБиблиотек.Добавить(КаталогСистемныхБиблиотек); |
84 | | - |
| 88 | + ДобавитьКаталогБиблиотек("./" + КонстантыOpm.ЛокальныйКаталогУстановкиПакетов); |
| 89 | + |
85 | 90 | КонецПроцедуры |
86 | 91 |
|
87 | 92 | // Добавляет каталог в список, по которому выполняется поиск библиотек |
|
102 | 107 | МетаОписаниеПакета = Истина; |
103 | 108 | КонецЕсли; |
104 | 109 |
|
105 | | - УстановленныеПакеты.Вставить(ФайлКаталога.Имя, МетаОписаниеПакета); |
| 110 | + СтруктураДанных = Новый Структура(); |
| 111 | + СтруктураДанных.Вставить("МетаданныеПакета", МетаОписаниеПакета); |
| 112 | + СтруктураДанных.Вставить("КаталогПакета", ФайлКаталога.ПолноеИмя); |
| 113 | + |
| 114 | + УстановленныеПакеты.Вставить(ФайлКаталога.Имя, СтруктураДанных); |
106 | 115 |
|
107 | 116 | КонецПроцедуры |
108 | 117 |
|
|
125 | 134 |
|
126 | 135 | КонецФункции |
127 | 136 |
|
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