Skip to content

Commit 5bd5475

Browse files
authored
Merge pull request #18 from asosnoviy/opmlist
opm list -remote
2 parents 336b350 + 22afb1a commit 5bd5475

5 files changed

+128
-22
lines changed

src/Классы/ДиспетчерКомандПриложения.os

+14-5
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
Процедура ДобавитьКомандуList(Знач Парсер)
8383
Команда = Парсер.ОписаниеКоманды("list", "Вывести список пакетов");
8484
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-q", """Тихий"" режим вывода без лишних сообщений.");
85+
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-remote", "Вывести список пакетов в хабе");
8586
Парсер.ДобавитьКоманду(Команда);
8687
КонецПроцедуры
8788

@@ -213,15 +214,23 @@
213214

214215
ТихийРежим = ЗначенияПараметров["-q"];
215216

216-
ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system");
217+
Если ЗначенияПараметров["-remote"] Тогда
218+
ТекстСообщения = СтрШаблон("Пакеты в хабе :");
219+
КэшПакетовВХабе = Новый КэшПакетовХаба();
220+
УстановленныеПакеты = КэшПакетовВХабе.ПолучитьПакетыХаба();
221+
Иначе
217222

223+
ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system");
224+
ТекстСообщения = СтрШаблон("Пакеты в системном каталоге библиотек <%1>:", ПутьККаталогуПакетов);
225+
226+
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов();
227+
УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();
228+
КонецЕсли;
229+
218230
Если НЕ ТихийРежим Тогда
219-
ТекстСообщения = СтрШаблон("Пакеты в системном каталоге библиотек <%1>:", ПутьККаталогуПакетов);
220-
Сообщить(ТекстСообщения);
231+
Сообщить(ТекстСообщения);
221232
КонецЕсли;
222233

223-
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов();
224-
УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();
225234
Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл
226235
Сообщить(УстановленныйПакет.Ключ);
227236
КонецЦикла;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
2+
#Использовать logos
3+
4+
Перем Лог;
5+
6+
Перем ПакетыХаба;
7+
8+
Процедура Обновить() Экспорт
9+
10+
УстановкаПакета = Новый Установкапакета();
11+
Сервер = Константы.СерверУдаленногоХранилища;
12+
Соединение = УстановкаПакета.ИнициализироватьСоединение(Сервер);
13+
Ресурс = Константы.ПутьВХранилище + "list.txt";
14+
Запрос = Новый HTTPЗапрос(Ресурс);
15+
Ответ = Соединение.Получить(Запрос);
16+
17+
Если НЕ Ответ.КодСостояния = 200 Тогда
18+
ТекстИсключения = СтрШаблон("Ошибка подключения к хабу <%1>", Ответ.КодСостояния);
19+
Ответ.Закрыть();
20+
ВызватьИсключение ТекстИсключения;
21+
КонецЕсли;
22+
23+
ТекстОтвета = Ответ.ПолучитьТелоКакСтроку();
24+
Ответ.Закрыть();
25+
26+
ПакетыХаба = Новый Соответствие;
27+
ТекстовыйДокумент = Новый ТекстовыйДокумент;
28+
ТекстовыйДокумент.УстановитьТекст(ТекстОтвета);
29+
КоличествоПакетовВХабе = ТекстовыйДокумент.КоличествоСтрок();
30+
Для НомерСтроки = 1 По КоличествоПакетовВХабе Цикл
31+
ПакетыХаба.Вставить(СокрЛП(ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки)), Истина);
32+
КонецЦикла;
33+
34+
КонецПроцедуры
35+
36+
Функция ЭтоПакетХаба(Знач ИмяПакета) Экспорт
37+
38+
Возврат ПакетыХаба[ИмяПакета] = Истина;
39+
40+
КонецФункции
41+
42+
Функция ПолучитьПакетыХаба() Экспорт
43+
44+
Возврат ПакетыХаба;
45+
46+
КонецФункции
47+
48+
Процедура Инициализация()
49+
50+
Лог = Логирование.ПолучитьЛог("oscript.app.opm");
51+
//Лог.УстановитьУровень(УровниЛога.Отладка);
52+
53+
Обновить();
54+
55+
КонецПроцедуры
56+
57+
Инициализация();

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

+20-17
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,6 @@
167167
Возврат Новый КэшУстановленныхПакетов();
168168
КонецФункции
169169

170-
Функция СерверУдаленногоХранилища()
171-
Возврат "http://hub.oscript.io";
172-
КонецФункции
173-
174170
Процедура СкачатьИУстановитьПакетПоОписанию(Знач ОписаниеПакета)
175171
// TODO: Нужно скачивание конкретной версии по маркеру
176172
СкачатьИУстановитьПакет(ОписаниеПакета.ИмяПакета, Неопределено);
@@ -184,20 +180,10 @@
184180
ФайлПакета = ИмяПакета + ".ospx";
185181
КонецЕсли;
186182

187-
Сервер = СерверУдаленногоХранилища();
188-
Ресурс = "/download/" + ИмяПакета + "/" + ФайлПакета;
183+
Сервер = Константы.СерверУдаленногоХранилища;
184+
Ресурс = Константы.ПутьВХранилище + ИмяПакета + "/" + ФайлПакета;
185+
Соединение = ИнициализироватьСоединение(Сервер);
189186

190-
НастройкиПрокси = НастройкиПриложения.Получить().Прокси;
191-
Если НастройкиПрокси.ИспользоватьПрокси = Истина Тогда
192-
Прокси = Новый ИнтернетПрокси(НастройкиПрокси.ПроксиПоУмолчанию);
193-
Если НастройкиПрокси.ПроксиПоУмолчанию = Ложь Тогда
194-
Прокси.Установить("http",НастройкиПрокси.Сервер,НастройкиПрокси.Порт,НастройкиПрокси.Пользователь,НастройкиПрокси.Пароль,НастройкиПрокси.ИспользоватьАутентификациюОС);
195-
КонецЕсли;
196-
Соединение = Новый HTTPСоединение(Сервер,,,,Прокси);
197-
Иначе
198-
Соединение = Новый HTTPСоединение(Сервер);
199-
КонецЕсли;
200-
201187
Запрос = Новый HTTPЗапрос(Ресурс);
202188
Лог.Информация("Скачиваю файл: " + ФайлПакета);
203189

@@ -223,6 +209,23 @@
223209

224210
КонецПроцедуры
225211

212+
Функция ИнициализироватьСоединение(Сервер) Экспорт
213+
214+
НастройкиПрокси = НастройкиПриложения.Получить().Прокси;
215+
Если НастройкиПрокси.ИспользоватьПрокси = Истина Тогда
216+
Прокси = Новый ИнтернетПрокси(НастройкиПрокси.ПроксиПоУмолчанию);
217+
Если НастройкиПрокси.ПроксиПоУмолчанию = Ложь Тогда
218+
Прокси.Установить("http",НастройкиПрокси.Сервер,НастройкиПрокси.Порт,НастройкиПрокси.Пользователь,НастройкиПрокси.Пароль,НастройкиПрокси.ИспользоватьАутентификациюОС);
219+
КонецЕсли;
220+
Соединение = Новый HTTPСоединение(Сервер,,,,Прокси);
221+
Иначе
222+
Соединение = Новый HTTPСоединение(Сервер);
223+
КонецЕсли;
224+
225+
Возврат Соединение;
226+
227+
КонецФункции
228+
226229
Функция РазобратьМаркерВерсии(Знач МаркерВерсии)
227230

228231
Перем ИндексВерсии;

src/Модули/Константы.os

+6
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@
33
Перем ИмяФайлаСкриптаУстановки Экспорт;
44
Перем ИмяФайлаСодержимогоПакета Экспорт;
55
Перем ИмяФайлаМетаданныхПакета Экспорт;
6+
Перем СерверУдаленногоХранилища Экспорт;
7+
Перем ПутьВХранилище Экспорт;
8+
69

710
///////////////////////////////////////////////////////////////
811

912
ИмяФайлаСпецификацииПакета = "packagedef";
1013
ИмяФайлаСкриптаУстановки = "_install_.os";
1114
ИмяФайлаСодержимогоПакета = "content.zip";
1215
ИмяФайлаМетаданныхПакета = "opm-metadata.xml";
16+
СерверУдаленногоХранилища = "http://hub.oscript.io";
17+
ПутьВХранилище = "/download/";
18+

tests/packagelist.os

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
#Использовать asserts
3+
#Использовать "../src"
4+
5+
Перем юТест;
6+
7+
Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт
8+
9+
юТест = Тестирование;
10+
11+
СписокТестов = Новый Массив;
12+
13+
СписокТестов.Добавить("ТестДолжен_ПолучитьПакетыХаба");
14+
15+
Возврат СписокТестов;
16+
17+
КонецФункции
18+
19+
20+
Функция ТестДолжен_ПолучитьПакетыХаба() Экспорт
21+
22+
ПакетыХаба = Новый КэшПакетовХаба;
23+
СписокПакетовХаба = ПакетыХаба.ПолучитьПакетыХаба();
24+
25+
Ожидаем.Что(СписокПакетовХаба.Количество()).Больше(1);
26+
Ожидаем.Что(СписокПакетовХаба.Получить("gitsync")).Равно(Истина);
27+
Ожидаем.Что(СписокПакетовХаба.Получить("opm")).Равно(Истина);
28+
Ожидаем.Что(СписокПакетовХаба.Получить("someelsepackadge")).Равно(Неопределено);
29+
30+
31+
КонецФункции

0 commit comments

Comments
 (0)