-
Notifications
You must be signed in to change notification settings - Fork 31
[WIP] opm show #244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
[WIP] opm show #244
Conversation
""" WalkthroughДобавлена новая команда "show s" в консольное приложение "opm" для отображения информации об установленных пакетах. Реализован отдельный обработчик команды, поддерживающий поиск по шаблонам и флаг "local" для ограничения поиска только локальными пакетами. Выводится подробная информация о найденных пакетах, включая зависимости. В ядре улучшена обработка метаданных пакетов и добавлена поддержка цепочек перекрытия пакетов. Введена константа для имени файла конфигурации библиотеки. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant OPM_CLI
participant КомандаOpm_Show
participant PackageCache
User->>OPM_CLI: Вводит "show s [пакет] [--local]"
OPM_CLI->>КомандаOpm_Show: Передаёт параметры команды
КомандаOpm_Show->>КомандаOpm_Show: Обрабатывает флаг "local" и шаблоны поиска
КомандаOpm_Show->>PackageCache: Загружает установленные пакеты
loop Поиск по пакетам
КомандаOpm_Show->>КомандаOpm_Show: Сравнивает имена с шаблонами
alt Найдено совпадение
КомандаOpm_Show->>User: Выводит подробную информацию о пакете
end
end
КомандаOpm_Show->>User: Выводит итоговое количество найденных пакетов
Suggested reviewers
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/cmd/Классы/КомандаOpm_Show.os (2)
6-6
: Исправьте опечатку в русском тексте опцииВ тексте опции "local" содержится грамматическая ошибка.
- КомандаПриложения.Опция("l local", Ложь, "Искать в локально установленных пакета"); + КомандаПриложения.Опция("l local", Ложь, "Искать в локально установленных пакетах");
74-74
: Рассмотрите использование НСтр для локализацииЖестко закодированные строки затрудняют локализацию приложения.
- Префикс = ?(мЗависимость.ДляРазработки, "Разработка зависит от", "Зависит от"); + Префикс = ?(мЗависимость.ДляРазработки, + НСтр("ru='Разработка зависит от';en='Development depends on'"), + НСтр("ru='Зависит от';en='Depends on'"));
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
src/cmd/opm.os
(1 hunks)src/cmd/Классы/КомандаOpm_Show.os
(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
PR: oscript-library/opm#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-02T15:17:59.576Z
Learning: Для работы с зависимостями используется пакетный менеджер OneScript Package Manager (opm).
src/cmd/opm.os (3)
Learnt from: CR
PR: oscript-library/opm#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-02T15:17:59.576Z
Learning: Applies to tasks/test.os : Для запуска тестов используется команда: oscript tasks/test.os
Learnt from: CR
PR: oscript-library/opm#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-02T15:17:59.576Z
Learning: Для работы с зависимостями используется пакетный менеджер OneScript Package Manager (opm).
Learnt from: CR
PR: oscript-library/opm#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-02T15:17:59.576Z
Learning: Applies to tasks/coverage.os : Для запуска тестов с замером покрытия используется команда: oscript tasks/coverage.os
src/cmd/Классы/КомандаOpm_Show.os (3)
Learnt from: CR
PR: oscript-library/opm#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-02T15:17:59.576Z
Learning: Для работы с зависимостями используется пакетный менеджер OneScript Package Manager (opm).
Learnt from: sfaqer
PR: oscript-library/opm#235
File: src/core/Классы/КэшУстановленныхПакетов.os:44-44
Timestamp: 2025-05-23T12:07:34.112Z
Learning: В процедуре `ПроверитьВерсиюСреды` в файле `src/core/Модули/РаботаСОписаниемПакета.os` вызов `РаботаСВерсиями.СравнитьВерсии` должен быть сохранен как fallback-механизм для обратной совместимости с ранними версиями среды, которые не используют семантическое версионирование.
Learnt from: CR
PR: oscript-library/opm#0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-07-02T15:17:59.576Z
Learning: Applies to tasks/test.os : Для запуска тестов используется команда: oscript tasks/test.os
🔇 Additional comments (3)
src/cmd/opm.os (1)
46-49
: Регистрация новой команды выполнена корректноДобавление команды "show s" следует существующему паттерну и правильно интегрируется в приложение.
src/cmd/Классы/КомандаOpm_Show.os (2)
85-103
: Отличная реализация функции форматирования версийФункция корректно обрабатывает версионные ограничения и эффективно формирует строку представления.
38-52
: Логическая проблема с подсчетом найденных пакетовТекущая логика может привести к некорректному подсчету: если пакет соответствует нескольким регулярным выражениям, он будет показан несколько раз, но счетчик увеличится только один раз из-за
Прервать
на строке 47.Рекомендуется вынести логику проверки соответствия в отдельную функцию:
КоличествоНайденныхПакетов = 0; Для Каждого УстановленныйПакет Из УстановленныеПакеты Цикл ИмяПакета = УстановленныйПакет.Ключ; - Для Каждого мРегулярноеВыражение Из МассивРегулярныхВыражений Цикл - - Если мРегулярноеВыражение.Совпадает(ИмяПакета) Тогда - КоличествоНайденныхПакетов = КоличествоНайденныхПакетов + 1; - ВывестиИнформациюОПакете(УстановленныйПакет.Значение); - Прервать; - КонецЕсли; - - КонецЦикла; + Если ПакетСоответствуетПоиску(ИмяПакета, МассивРегулярныхВыражений) Тогда + КоличествоНайденныхПакетов = КоличествоНайденныхПакетов + 1; + ВывестиИнформациюОПакете(УстановленныйПакет.Значение); + КонецЕсли; КонецЦикла;⛔ Skipped due to learnings
Learnt from: sfaqer PR: oscript-library/opm#235 File: src/core/Классы/КэшУстановленныхПакетов.os:44-44 Timestamp: 2025-05-23T12:07:34.112Z Learning: В процедуре `ПроверитьВерсиюСреды` в файле `src/core/Модули/РаботаСОписаниемПакета.os` вызов `РаботаСВерсиями.СравнитьВерсии` должен быть сохранен как fallback-механизм для обратной совместимости с ранними версиями среды, которые не используют семантическое версионирование.
На вскидку ещё "адрес репозитория" и доступность в хабе пакетов (и версия), но для этого, кажется, надо бэкэнд дорабатывать, чтобы он метаданные пакета из бд в апи выплевывал |
src/cmd/Классы/КомандаOpm_Show.os
Outdated
|
||
КонецЦикла; | ||
|
||
ПутьККаталогуПакетов = ПолучитьЗначениеСистемнойНастройки("lib.system"); |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
да, lib.additional
тоже надо проверить. Ещё и с учётом того, что там список каталогов. (им вообще ещё пользуются? :-D )
There was a problem hiding this comment.
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
...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Им пользуются, но мне кажется, у опм он будет свой переопределенное, а не системный
|
||
КонецЦикла; | ||
|
||
Сообщить(СтрШаблон("Найдено пакетов: %1", КоличествоНайденныхПакетов)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Может быть логгер с выключенной раскладкой?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
результат работы не есть логи, на мой взгляд.
выведется всё, что описание пакета выдаст через
сейчас оно вообще только локально работает |
По-умолчанию выполняем строгое сравнение искомой строки и имени пакета. Использование регулярного выражения включается отдельным флагом.
[WIP] - принимаются пожелания по формату отображения.
Сейчас так:
Summary by CodeRabbit