Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/cmd/opm.os
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@
НСтр("ru='Скачать файл пакета и файлы зависимостей';
|en='Download package and dependencies'"),
Новый КомандаOpm_Download);

Приложение.ДобавитьКоманду("show s",
НСтр("ru='Показать информацию об установленном пакете';
|en='Show installed package info'"),
Новый КомандаOpm_Show);

Приложение.Запустить(АргументыКоманднойСтроки);

Expand Down
103 changes: 103 additions & 0 deletions src/cmd/Классы/КомандаOpm_Show.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
// Прикладной интерфейс

Процедура ОписаниеКоманды(Знач КомандаПриложения) Экспорт

КомандаПриложения.Опция("l local", Ложь, "Искать в локально установленных пакета");

КомандаПриложения.Аргумент("PACKAGE", "", "Строка поиска пакета в хабе")
.ТМассивСтрок()
.Обязательный(Истина);

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

Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

УстановкаВЛокальныйКаталог = КомандаПриложения.ЗначениеОпции("local");
МассивПоисковыхЗапросов = КомандаПриложения.ЗначениеАргумента("PACKAGE");

МассивРегулярныхВыражений = Новый Массив;

Для Каждого мТекстЗапроса Из МассивПоисковыхЗапросов Цикл

РегулярноеВыражение = Новый РегулярноеВыражение(мТекстЗапроса);
РегулярноеВыражение.ИгнорироватьРегистр = Истина;

МассивРегулярныхВыражений.Добавить(РегулярноеВыражение);

КонецЦикла;

ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lib.additional? Или на нем сам opm висит со своими oscript_modules?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

да, lib.additional тоже надо проверить. Ещё и с учётом того, что там список каталогов. (им вообще ещё пользуются? :-D )

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lib.additional? Или на нем сам opm висит со своими oscript_modules?

я взял за основу команду list - а там нет обработки lib.additional...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Им пользуются, но мне кажется, у опм он будет свой переопределенное, а не системный

Если УстановкаВЛокальныйКаталог Тогда
ПутьККаталогуПакетов = ОбъединитьПути(ТекущийКаталог(), КонстантыOpm.ЛокальныйКаталогУстановкиПакетов);
КонецЕсли;

КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов(ПутьККаталогуПакетов);
УстановленныеПакеты = КэшУстановленныхПакетов.ПолучитьУстановленныеПакеты();

КоличествоНайденныхПакетов = 0;
Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл

ИмяПакета = УстановленныйПакет.Ключ;
Для Каждого мРегулярноеВыражение Из МассивРегулярныхВыражений Цикл

Если мРегулярноеВыражение.Совпадает(ИмяПакета) Тогда
КоличествоНайденныхПакетов = КоличествоНайденныхПакетов + 1;
ВывестиИнформациюОПакете(УстановленныйПакет.Значение);
Прервать;
КонецЕсли;

КонецЦикла;

КонецЦикла;

Сообщить(СтрШаблон("Найдено пакетов: %1", КоличествоНайденныхПакетов));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может быть логгер с выключенной раскладкой?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

результат работы не есть логи, на мой взгляд.


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

Процедура ВывестиИнформациюОПакете(Знач УстановленныйПакет)

Сообщить(СтрШаблон("Каталог: %1", УстановленныйПакет.КаталогПакета));

ОписаниеПакета = УстановленныйПакет.МетаданныеПакета;
Если ТипЗнч(ОписаниеПакета) <> Тип("Булево") Тогда

Свойства = ОписаниеПакета.Свойства();
Для Каждого мСвойство Из Свойства Цикл
Сообщить(СтрШаблон(" %1: %2", мСвойство.Ключ, мСвойство.Значение));
КонецЦикла;

Зависимости = ОписаниеПакета.Зависимости();
Зависимости.Сортировать("ДляРазработки");
Для Каждого мЗависимость Из Зависимости Цикл

Префикс = ?(мЗависимость.ДляРазработки, "Разработка зависит от", "Зависит от");
СтрокаВерсииЗависимости = СтрокаВерсииЗависимости(мЗависимость);

Сообщить(СтрШаблон(" %1 %2%3", Префикс, мЗависимость.ИмяПакета, СтрокаВерсииЗависимости));

КонецЦикла;

КонецЕсли;

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

Функция СтрокаВерсииЗависимости(Знач мЗависимость)

Подстроки = Новый Массив;

Если ЗначениеЗаполнено(мЗависимость.МинимальнаяВерсия) Тогда
Подстроки.Добавить(">=" + мЗависимость.МинимальнаяВерсия);
КонецЕсли;

Если ЗначениеЗаполнено(мЗависимость.МаксимальнаяВерсия) Тогда
Подстроки.Добавить("<=" + мЗависимость.МаксимальнаяВерсия);
КонецЕсли;

Если ЗначениеЗаполнено(Подстроки) Тогда
Возврат " (" + СтрСоединить(Подстроки, ", ") + ")";
КонецЕсли;

Возврат "";

КонецФункции
Loading