Skip to content

Commit 13d3828

Browse files
committed
opm list -remote
1 parent 631555c commit 13d3828

File tree

5 files changed

+135
-23
lines changed

5 files changed

+135
-23
lines changed

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

Lines changed: 14 additions & 5 deletions
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
КонецЦикла;
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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+
HTMLхаба = Ответ.ПолучитьТелоКакСтроку();
24+
ВремФайл = ОбъединитьПути(КаталогВременныхФайлов(), "list.txt");
25+
Ответ.ПолучитьТелоКакДвоичныеДанные().Записать(ВремФайл);
26+
Ответ.Закрыть();
27+
28+
ЧтениеТекста = Новый ЧтениеТекста();
29+
ЧтениеТекста.Открыть(ВремФайл);
30+
ПакетыХаба = Новый Соответствие;
31+
32+
СтрокаТекста = ЧтениеТекста.ПрочитатьСтроку();
33+
Пока СтрокаТекста <> Неопределено Цикл
34+
ПакетыХаба.Вставить(СтрокаТекста, Истина);
35+
СтрокаТекста = ЧтениеТекста.ПрочитатьСтроку();
36+
КонецЦикла;
37+
38+
ЧтениеТекста.Закрыть();
39+
УдалитьФайлы(ВремФайл);
40+
41+
КонецПроцедуры
42+
43+
Функция ЭтоПакетХаба(Знач ИмяПакета) Экспорт
44+
45+
Возврат ПакетыХаба[ИмяПакета] = Истина;
46+
47+
КонецФункции
48+
49+
Функция ПолучитьПакетыХаба() Экспорт
50+
51+
Возврат ПакетыХаба;
52+
53+
КонецФункции
54+
55+
Процедура Инициализация()
56+
57+
Лог = Логирование.ПолучитьЛог("oscript.app.opm");
58+
//Лог.УстановитьУровень(УровниЛога.Отладка);
59+
60+
Обновить();
61+
62+
КонецПроцедуры
63+
64+
Инициализация();

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

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,6 @@
173173
Возврат Новый КэшУстановленныхПакетов();
174174
КонецФункции
175175

176-
Функция СерверУдаленногоХранилища()
177-
Возврат "http://hub.oscript.io";
178-
КонецФункции
179-
180176
Процедура СкачатьИУстановитьПакетПоОписанию(Знач ОписаниеПакета)
181177
// TODO: Нужно скачивание конкретной версии по маркеру
182178
СкачатьИУстановитьПакет(ОписаниеПакета.ИмяПакета, Неопределено);
@@ -190,20 +186,10 @@
190186
ФайлПакета = ИмяПакета + ".ospx";
191187
КонецЕсли;
192188

193-
Сервер = СерверУдаленногоХранилища();
194-
Ресурс = "/download/" + ИмяПакета + "/" + ФайлПакета;
189+
Сервер = Константы.СерверУдаленногоХранилища;
190+
Ресурс = Константы.ПутьВХранилище + ИмяПакета + "/" + ФайлПакета;
191+
Соединение = ИнициализироватьСоединение(Сервер);
195192

196-
НастройкиПрокси = НастройкиПриложения.Получить().Прокси;
197-
Если НастройкиПрокси.ИспользоватьПрокси = Истина Тогда
198-
Прокси = Новый ИнтернетПрокси(НастройкиПрокси.ПроксиПоУмолчанию);
199-
Если НастройкиПрокси.ПроксиПоУмолчанию = Ложь Тогда
200-
Прокси.Установить("http",НастройкиПрокси.Сервер,НастройкиПрокси.Порт,НастройкиПрокси.Пользователь,НастройкиПрокси.Пароль,НастройкиПрокси.ИспользоватьАутентификациюОС);
201-
КонецЕсли;
202-
Соединение = Новый HTTPСоединение(Сервер,,,,Прокси);
203-
Иначе
204-
Соединение = Новый HTTPСоединение(Сервер);
205-
КонецЕсли;
206-
207193
Запрос = Новый HTTPЗапрос(Ресурс);
208194
Лог.Информация("Скачиваю файл: " + ФайлПакета);
209195

@@ -229,6 +215,23 @@
229215

230216
КонецПроцедуры
231217

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

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

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

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

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

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

tests/packagelist.os

Lines changed: 31 additions & 0 deletions
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)