Skip to content

Conversation

dmpas
Copy link
Member

@dmpas dmpas commented Jul 12, 2025

Логи не должны использоваться для интерактивного взаимодействия с пользователем.
То, что должно быть логом - снижено до уровня ОТЛАДКА.
То, что должно отображаться конечному пользователю - выводится непосредственно пользователю.

Summary by CodeRabbit

  • Новые возможности
    • Добавлены уведомления пользователю о ходе загрузки и установки пакетов.
  • Улучшения
    • Сообщения о процессе установки и загрузки теперь отображаются через пользовательский интерфейс, а не только в логах.
    • Уровень подробности логирования снижен для стандартных операций, чтобы уменьшить избыточность сообщений.
  • Документация
    • Добавлены комментарии и директивы для улучшения читаемости кода.

Copy link

coderabbitai bot commented Jul 12, 2025

Walkthrough

Внесены изменения в систему установки и получения пакетов: добавлена новая процедура для уведомления пользователя, заменены прямые вызовы информационного логирования на сообщения пользователю, а также изменены имена каналов логирования. Уровень логирования для некоторых сообщений снижен до отладочного. Изменения не затрагивают основную логику работы.

Changes

Файл/Группа файлов Краткое описание изменений
src/core/Классы/МенеджерПолученияПакетов.os Заменено логирование на пользовательское сообщение; изменён канал логирования.
src/core/Классы/МенеджерУстановкиПакетов.os Добавлены директивы отключения предупреждений, реорганизована сигнатура процедуры, логирование переведено на debug, добавлено уведомление пользователя, изменён канал логирования.
src/core/Классы/УстановкаПакета.os Заменено логирование на сообщения пользователю в трёх местах.
src/core/Модули/ОбщегоНазначенияOpm.os Добавлена экспортируемая процедура СообщениеПользователю для вывода сообщений и логирования на debug-уровне.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant МенеджерУстановкиПакетов
    participant МенеджерПолученияПакетов
    participant ОбщегоНазначенияOpm

    МенеджерУстановкиПакетов->ОбщегоНазначенияOpm: СообщениеПользователю(Лог, "Устанавливаю пакет ...")
    МенеджерПолученияПакетов->ОбщегоНазначенияOpm: СообщениеПользователю(Лог, "Скачиваю файл ...")
    ОбщегоНазначенияOpm->User: Сообщить(сообщение)
    ОбщегоНазначенияOpm->МенеджерУстановкиПакетов: Лог.Отладка(сообщение)
Loading

Suggested reviewers

  • EvilBeaver

Poem

В коде зайчишка прыг-скок,
Сообщения шлёт — не впрок
Логам шумным, а теперь
Пользователь — вот наш зверь!
Пусть debug шепчет в тени,
А на экране — добрые вести и огни.
🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6b395c8 and 301e89e.

📒 Files selected for processing (4)
  • src/core/Классы/МенеджерПолученияПакетов.os (2 hunks)
  • src/core/Классы/МенеджерУстановкиПакетов.os (7 hunks)
  • src/core/Классы/УстановкаПакета.os (3 hunks)
  • src/core/Модули/ОбщегоНазначенияOpm.os (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
src/core/Классы/МенеджерПолученияПакетов.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
src/core/Классы/УстановкаПакета.os (2)
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: Для работы с зависимостями используется пакетный менеджер OneScript Package Manager (opm).
src/core/Классы/МенеджерУстановкиПакетов.os (5)
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 oscript_modules/** : Зависимости проекта устанавливаются и размещаются в подкаталоге oscript_modules, расположенном в корне проекта.
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: sfaqer
PR: oscript-library/opm#235
File: src/core/Модули/РаботаСОписаниемПакета.os:37-37
Timestamp: 2025-05-23T12:04:43.639Z
Learning: В процедуре `ПроверитьВерсиюМанифеста` не требуется fallback механизм для сравнения версий, так как версия манифеста всегда должна соответствовать семантическому версионированию (semver). В то же время, для процедуры `ПроверитьВерсиюСреды` fallback нужен, так как старые версии среды могут не соответствовать формату semver.
🔇 Additional comments (13)
src/core/Классы/МенеджерПолученияПакетов.os (2)

32-32: Изменение корректное - использование централизованного механизма уведомлений пользователя.

Замена прямого логирования на вызов ОбщегоНазначенияOpm.СообщениеПользователю правильно реализует разделение пользовательских сообщений и отладочной информации согласно целям PR.


290-290: Использование специализированного канала логирования улучшает диагностику.

Обновление канала с "oscript.app.opm" на "oscript.app.opm.receive" обеспечивает более точную категоризацию логов для компонента получения пакетов.

src/core/Модули/ОбщегоНазначенияOpm.os (1)

15-19: Хорошо реализованная централизованная процедура для пользовательских сообщений.

Процедура правильно комбинирует вывод для пользователя через Сообщить с отладочным логированием. Поддержка шаблонных параметров обеспечивает гибкость использования.

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

48-48: Корректное использование пользовательского уведомления для начала установки.

Замена Лог.Информация на ОбщегоНазначенияOpm.СообщениеПользователю обеспечивает вывод сообщения пользователю и одновременное отладочное логирование.


88-88: Правильное уведомление пользователя о завершении установки.

Использование централизованного механизма уведомлений соответствует архитектурному решению PR по разделению пользовательских сообщений и логов.


253-253: Согласованное применение пользовательских уведомлений для регистрации приложений.

Переход на ОбщегоНазначенияOpm.СообщениеПользователю поддерживает единообразие в обработке сообщений о регистрации исполняемых файлов.

src/core/Классы/МенеджерУстановкиПакетов.os (7)

6-7: Добавление директив компилятора для подавления предупреждений.

Директивы BSLLS:MissingVariablesDescription-off правильно используются для подавления предупреждений о отсутствующих описаниях переменных в модуле.


22-26: Улучшенное форматирование параметров процедуры.

Многострочное объявление параметров с директивой NumberOfOptionalParams-off повышает читаемость кода при большом количестве необязательных параметров.


118-121: Правильное понижение уровня логирования внутренних сообщений.

Изменение Лог.Информация на Лог.Отладка для сообщений о зависимостях разработчика соответствует цели PR по снижению шума в логах.


152-152: Добавление пользовательского уведомления об успешной установке пакета.

Вызов ОбщегоНазначенияOpm.СообщениеПользователю информирует пользователя об установленном пакете, что улучшает пользовательский опыт.


192-204: Согласованное понижение уровня логирования для внутренних операций с зависимостями.

Перевод сообщений о требуемых и устанавливаемых зависимостях на уровень Отладка правильно разделяет внутреннюю диагностическую информацию от пользовательских сообщений.


223-226: Корректное понижение уровня логирования для локальных зависимостей.

Изменение уровня логирования сообщений об установке и пропуске локальных зависимостей на Отладка соответствует архитектуре PR.


274-274: Использование специализированного канала логирования для установки пакетов.

Канал "oscript.app.opm.install" обеспечивает более точную категоризацию логов компонента установки пакетов, что соответствует паттерну других файлов.


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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need 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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@nixel2007
Copy link
Member

Я не совсем понимаю, зачем переписывать Информация на Сообщить. Теряем гибкость управления уровнем вывода, расположением вывода (ладно, есть дублирующий вывод лога в файл, но в режиме отладки тогда две строки вывода вместо одной), возможность преобразования в json log.

В других проектах я использовал Информацию с пустой раскладкой, и оно работало. В чем здесь преимущество или более корректное использование инструмента?

@dmpas
Copy link
Member Author

dmpas commented Jul 13, 2025

Я не совсем понимаю, зачем переписывать Информация на Сообщить

@nixel2007
Разделяем Статус и Логи. Ты говоришь, что если включишь отладку, то будет две строки - это так, но верно и другое:

  1. Если оставляем как есть, то если ты отключишь лог, пользователь не увидит вообще ничего
  2. После исправления, ты можешь логи перенаправить в файл, но пользователь всё равно будет видеть статус

@dmpas
Copy link
Member Author

dmpas commented Jul 13, 2025

вот наглядное сравнение
LOGOS_DISABLE_OLD

LOGOS_DISABLE_SUGGEST

@nixel2007
Copy link
Member

Если оставляем как есть, то если ты отключишь лог, пользователь не увидит вообще ничего

Вроде это не баг, а фича, не?

@dmpas
Copy link
Member Author

dmpas commented Jul 13, 2025

Если оставляем как есть, то если ты отключишь лог, пользователь не увидит вообще ничего

Вроде это не баг, а фича, не?

сомнительно.
Если ты работаешь в рамках регламента - одно дело.
А я, как пользователь, общаясь с железякой командой "установи ВотЭто" не хочу видеть простыню "порыскал по зеркалу, попробовал скачать, о, скачалось, попробуем установить, о, установилось, а чо там по зависимостям???".
И не хочу видеть тишину.
Я хочу увидеть ответ "установил Это и немного Того" или "не установил" - и в этом случае я скажу "установи ВотЭто --СГрязнымиПодробностями".

Это обычная механика работы с командной строкой - Запрос-Ответ, Запрос-Ответ

Copy link
Member

@EvilBeaver EvilBeaver left a comment

Choose a reason for hiding this comment

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

Я апрувну, но попрошу @nixel2007 или @sfaqer одобрить и само изменение поведения. Мало ли, кто-то завязан в CI на выхлопы OPM...

@nixel2007 nixel2007 merged commit 0b1efd6 into oscript-library:master Jul 18, 2025
1 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants