Skip to content

Latest commit

 

History

History
77 lines (62 loc) · 5.9 KB

cli-update.md

File metadata and controls

77 lines (62 loc) · 5.9 KB

Обновление установленной ESKA

eska update --check
eska update
eska update --target-version 0.11.1
eska update --check --format json

--check проверяет версии без записи. Без него новая стабильная версия устанавливается сразу: запуск команды означает согласие на обновление. Проект, исходники, Git и eska.toml не затрагиваются. Версия в примере --target-version должна быть опубликована в выбранном канале. Понижение версии и prerelease/build-суффиксы не поддерживаются.

Выбор способа установки

Команда проверяет собственный исполняемый файл, а не произвольную ESKA из PATH.

  • Cargo: каталог <root>/bin, запись ESKA из crates.io в .crates2.json и cargo install --list --root <root> должны соответствовать запущенной версии. Затем выполняется cargo install eska --locked --registry crates-io --version … с прежними root, target, profile и features. Доступные версии берутся из официального sparse index crates.io; отозванные, предварительные выпуски и неизвестные версии схемы индекса исключаются. Web API crates.io не требуется.
  • Официальный установщик: проверяются receipt cargo-dist, источник 1c-tooling/eska и принадлежность записи запущенному файлу. Axoupdater получает стабильный релиз GitHub и запускает его установщик для прежнего каталога.
  • Неизвестная установка: возвращается unsupported-installation без записи. Это относится в том числе к обычному target/debug/eska, ручной копии без receipt и установкам Cargo из Git/path вместо crates.io.

Ошибка Cargo не вызывает переход на установщик. Нужен рабочий Cargo для обновления Cargo-установки; готовый бинарник обновляется без сборки Rust. При нескольких установках обновляется только запущенная копия.

Перед заменой удерживается файловая блокировка .eska-update.lock в install root и повторно проверяется версия файла. Сам файл блокировки может оставаться после завершения; блокировка ОС освобождается при закрытии процесса. После установки проверяется фактический вывод eska --version.

Старые версии без команды update нужно один раз обновить прежним способом: повторить cargo install eska --locked (с прежними опциями при нестандартной установке) либо официальный shell/PowerShell installer. Затем достаточно eska update. Обновление CLI не обновляет расширение VS Code.

JSON schema 1

Результат идёт одной JSON-строкой в stdout, сообщения дочернего установщика — в stderr. Локаль и NO_COLOR не меняют JSON. Пример проверки:

{"schemaVersion":1,"status":"update-available","installedVersion":"0.11.0","availableVersion":"0.11.1","method":"cargo","executable":{"value":"/home/user/.cargo/bin/eska","encoding":"utf-8"}}

installedVersion — версия до запуска обновления, availableVersion — выбранная версия канала; при updated это проверенная новая версия. method: cargo, installer или unknown. executable использует общий обратимый формат путей CLI (value, encoding), включая пути, не представимые в UTF-8.

status Код выхода Значение
up-to-date 0 Выбранная версия не новее установленной, записи нет
update-available 0 Проверка нашла новую версию
updated 0 Установка завершена, новая версия проверена
unsupported-installation 1 Способ установки не определён; availableVersion = null
error 1 Обновление или проверка не выполнены

Ошибка имеет форму {"schemaVersion":1,"status":"error","code":"network"}. Коды: io, network, cargo-query, cargo-install, installer, busy, invalid-version, verification, runtime. Ошибки разбора аргументов CLI возвращают код 2 до выполнения команды. При ошибке процесс не выбирает другой канал и не повторяет установку автоматически; детали дочернего процесса доступны в stderr. Универсального отката после произвольного сбоя установщика нет.

Проверки Linux используют временные установки и локальный fake release server. Реальная приёмка обновления на Windows/macOS ещё не выполнена.