Skip to content

feat: команда completions через autumn-cli + &ПоставщикДополнения#54

Draft
Copilot wants to merge 15 commits intodevelopfrom
copilot/add-completions-command
Draft

feat: команда completions через autumn-cli + &ПоставщикДополнения#54
Copilot wants to merge 15 commits intodevelopfrom
copilot/add-completions-command

Conversation

Copy link
Copy Markdown

Copilot AI commented Apr 22, 2026

Суть

Команда ovm completions для генерации shell-скриптов автодополнения (bash/zsh/pwsh) на базе новой инфраструктуры cli + аннотации &ПоставщикДополнения из autumn-cli. Значения запекаются в итоговый скрипт литералами — в момент нажатия Tab никакие подпроцессы не запускаются.

Что делает PR

Убрано (перенесено вверх по стеку)

  • src/cmd/Классы/КомандаCompletions.os — полностью удалён. Команда completions теперь реализована в cli-библиотеке и автоматически регистрируется на каждом cli-приложении.

Добавлено

  • На поля команд навешена аннотация &ПоставщикДополнения("ИмяМетода"):
    • КомандаUse.ИспользуемаяВерсия, КомандаUninstall.МассивВерсийКУдалению, КомандаWhich.ИскомаяВерсия, КомандаRun.ИспользуемаяВерсияПолучитьУстановленныеВерсии;
    • КомандаInstall.МассивВерсийКУстановкеПолучитьДоступныеВерсии.
  • features/completions.feature — регрессионные BDD-сценарии для bash/zsh/pwsh.

Облегчённый геттер в ВерсииOneScript

  • Добавлен ПолучитьСписокАлиасовУстановленныхВерсий() — возвращает Массив<Строка> исключительно по содержимому каталога установки через ВерсияУстановлена(). В отличие от существующего ПолучитьСписокУстановленныхВерсий(), не запускает oscript -version на каждую версию и не парсит вывод ls -la/dir для определения симлинков.
  • Все провайдеры автодополнения установленных версий переведены на этот геттер — генерация completion-скрипта больше не форкает N оскрипт-процессов.

КомандаInstall на декларативном стиле

install переведён на поля-свойства (&Опция / &Аргумент / &ВыполнениеКоманды) — в духе остальных команд ovm и в духе autumn-cli.

Обновлено

  • packagedef: autumn-cli поднят до 1.4.0, autumn-logos — до 1.3.1 (требуются для аннотации &ПоставщикДополнения и переноса completions в cli).

Как это работает

ovm completions --shell bash → cli-библиотека обходит дерево команд, для каждого поля с &ПоставщикДополнения вызывает указанный метод и запекает возвращённый массив литералом в итоговый скрипт. Никаких runtime-вызовов ovm из скрипта автодополнения на Tab.

Подготовка скрипта занимает ~2 сек (доминирует сетевой запрос к сайту OneScript в провайдере ПолучитьДоступныеВерсии для install).

Проверено

  • Все 10 шагов BDD-сценариев features/completions.feature — зелёные.

  • Запечённые варианты видны в скрипте:

    use|u)
        ...
        COMPREPLY=($(compgen -W "dev 2.0.0.rc6 stable 1.0.20 lts ..." -- "$cur"))
        ;;

Зависимые PR

Установка после мёржа

После публикации cli 0.12.0 и autumn-cli 1.4.0opm install -l ovm.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Copilot AI and others added 2 commits April 22, 2026 08:31
Agent-Logs-Url: https://github.com/oscript-library/ovm/sessions/a756b324-c974-4864-b444-6e841a0c276e

Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com>
Agent-Logs-Url: https://github.com/oscript-library/ovm/sessions/a756b324-c974-4864-b444-6e841a0c276e

Co-authored-by: nixel2007 <1132840+nixel2007@users.noreply.github.com>
Comment thread src/cmd/Классы/КомандаCompletions.os Outdated
Comment thread src/cmd/Классы/СборщикОпций.os Outdated
Copilot AI and others added 2 commits April 22, 2026 10:16
Copilot AI requested a review from nixel2007 April 22, 2026 10:19
@nixel2007
Copy link
Copy Markdown
Member

@copilot ты вообще пробовал это запускать? Вот инструкции по установке оскрипта
https://github.com/nixel2007/entity/blob/master/.github/workflows/copilot-setup-steps.yml

…g construction

- Injecting КонсольноеПриложение created a circular dependency (autumn-cli's
  КонсольноеПриложение bean depends on all КомандаПриложения beans, including
  КомандаCompletions itself). Autumn has no protection against cycles — the app
  hung on startup.
- Now inject Поделка and resolve КонсольноеПриложение lazily at command
  execution time, when the container is fully built.
- The bash script was built as an oscript multi-line string literal without
  the required `|` continuation-line prefix, causing a parse error. Rebuilt
  it by assembling an array of lines joined with Символы.ПС.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@coveralls
Copy link
Copy Markdown

coveralls commented Apr 22, 2026

Coverage Report for CI Build 24783228439

Coverage remained the same at 75.61%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 82
Covered Lines: 62
Line Coverage: 75.61%
Coverage Strength: 23.57 hits per line

💛 - Coveralls

nixel2007 and others added 3 commits April 22, 2026 15:50
Older version has a syntax error (missing comma in ФабрикаЛогов.os)
that is caught by stricter oscript parsers and prevents the app from
starting on a fresh install.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Adds dynamic suggestions for positional version arguments:
  - 'ovm use <TAB>' → installed versions via 'ovm ls -q'
  - 'ovm install <TAB>' → available remote versions via 'ovm ls -r'
    (first column extracted with awk to strip the URL part)
- Option completions (starting with '-') still work as before: when the
  current token starts with a dash, only options are offered.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
All three accept an installed version alias as positional argument,
so suggest installed versions via 'ovm ls -q'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sonar-openbsl-ru-qa-bot
Copy link
Copy Markdown

Failed Quality Gate failed

  • 11 New Issues (is greater than 0)

Project ID: ovm

View in SonarQube

…style

Команда 'completions' удалена из ovm и теперь предоставляется напрямую
autumn-cli — все приложения на autumn-cli получают её бесплатно.

На полях команд навешена аннотация &ПоставщикДополнения (новая в
autumn-cli 1.4.0), которая на этапе генерации скрипта запекает в него
динамические значения:
 - use / uninstall / which / run — установленные версии;
 - install — доступные к установке версии.

КомандаInstall переписана в декларативный стиль (&Опция/&Аргумент +
&ВыполнениеКоманды) взамен устаревшего ОписаниеКоманды/ВыполнитьКоманду.

Фича completions.feature обновлена: теперь поддерживаются все три
оболочки (bash, zsh, pwsh), сценарий 'не поддерживается' проверяется
на fish.

packagedef: autumn-cli → 1.4.0 (релиз с фичей в autumn-library/autumn-cli#20).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@nixel2007 nixel2007 changed the title Add completions command for shell autocompletion script generation feat: команда completions через autumn-cli + &ПоставщикДополнения Apr 22, 2026
Убран сценарий с fish — валидация оболочки теперь делается через
&ТПеречисление, некорректное значение отсекается фреймворком до
выполнения команды.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…tion

КомандаInstall.os потеряла табуляцию при переходе на декларативный
стиль; также в Run/Uninstall хвост ПолучитьУстановленныеВерсии был
без отступов. Возвращено табуляционное оформление.

В ВерсииOneScript добавлен ПолучитьСписокАлиасовУстановленныхВерсий —
облегченный геттер, не запускающий oscript -version на каждую версию
и не дергающий ls/dir для определения симлинков. Провайдеры автодо-
полнения КомандаUse/Uninstall/Which/Run переведены на него — запекание
списка алиасов в completion-скрипт больше не требует обхода процессов
per version.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@nixel2007 nixel2007 force-pushed the copilot/add-completions-command branch from 815eee1 to 0d04c38 Compare April 23, 2026 10:23
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.

4 participants