Обновление программы

Finam Terminal сам следит за выходом новых версий и обновляется в один шаг: скачивает новый файл программы, проверяет его и перезапускается. Заходить на GitHub и вспоминать команду установки не нужно.

Как обновиться прямо сейчас

  1. Нажмите U на основном экране. В русской раскладке — Г.
  2. В открывшемся окне выберите Обновить и перезапустить. Если установлена последняя версия, окно не откроется, а в статус-баре появится сообщение «Установлена последняя версия».
  3. Дождитесь перезапуска. В шапке появится новый номер версии.

Как работает проверка

Раз в сутки программа в фоне спрашивает у GitHub, какая версия сейчас последняя.

  • Проверка идёт в фоне и не задерживает ни запуск, ни работу терминала.
  • Чаще одного раза в сутки запросы не отправляются: результат последней проверки хранится в файле, и повторный запуск в тот же день сети не касается.
  • Нет сети или GitHub недоступен — терминал работает дальше, а в журнал finam-terminal.log пишется строка [WARN] Update check failed: …. Окон с ошибками не появляется.

Значок ⚡ в шапке

Когда доступна новая версия, в шапке рядом с номером установленной версии загорается жёлтый значок с номером доступной:

 Finam Terminal v0.14.0 ⚡ v0.15.0

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

Диалог при запуске

Если на момент запуска о новой версии уже известно, до основного интерфейса появится окно:

⚡ Доступна новая версия Finam Terminal
 
    Установлена:  v0.14.0
    Актуальная:   v0.15.0
 
    [ Обновить и перезапустить ]   [ Продолжить ]
КнопкаЧто произойдёт
Обновить и перезапуститьТерминал скачает и установит новую версию, затем перезапустится
ПродолжитьОбычный запуск. Это выбор по умолчанию, его же даёт клавиша Esc

После отказа диалог в этом сеансе больше не появится — останется значок ⚡ в шапке. Обновиться, не дожидаясь следующего запуска, можно клавишей U. При следующем запуске предложение повторится.

Что происходит при обновлении

  1. Терминал запрашивает у GitHub сведения о последнем релизе.
  2. Скачивает файл для текущей операционной системы рядом с файлом программы — в консоли идёт полоса прогресса.
  3. Сверяет контрольную сумму SHA256 скачанного файла с опубликованной в релизе. Сумма не совпала — файл удаляется, установленная версия остаётся нетронутой.
  4. Заменяет файл программы новым.
  5. Перезапускает программу. В шапке видна новая версия.

Ошибка на любом шаге — нет сети, обрыв связи, несовпадение контрольной суммы, нет прав на запись — выводит сообщение, после чего терминал продолжает работу в текущей версии. Торговле обновление не мешает.

Если нет прав на запись

Программа установлена в системный каталог, например /usr/local/bin, и запущена без нужных прав — заменить файл она не сможет. В сообщении об ошибке будет готовая команда ручного обновления.

Ручное обновление

Обновиться можно тем же скриптом установки, что и при первой установке.

macOS / Linux / WSL:

curl -fsSL https://fcli.ru/install.sh | bash

Windows PowerShell:

irm https://fcli.ru/install.ps1 | iex

Способ пригодится, когда автообновление недоступно: нет прав на запись в каталог установки или для платформы нет готовой сборки — под Linux ARM64 и Windows ARM64 сборки в релизы не выкладываются, программу нужно собрать из исходников.

Docker-образ обновляется отдельно: docker pull, затем пересоздание контейнера — порядок описан в разделе Установка.

Примечания

  • Результат проверки хранится в файле update.json рядом с токеном: ~/.finam-cli/update.json на macOS и Linux, %USERPROFILE%\.finam-cli\update.json на Windows. Внутри — время последней проверки, номер последней версии и ссылка на страницу релиза
  • Файл update.json можно удалить: терминал выполнит проверку заново при следующем запуске. Испорченный файл считается отсутствующим
  • В сборках из исходников (go run main.go, go build) и в Docker-образе версия отображается как dev: проверки не выполняются, запросов в сеть нет, update.json не создаётся, ни диалога, ни значка ⚡ не появляется
  • Скрипт установки ставит только последний релиз. Предыдущие версии — на странице релизов
  • Что изменилось в каждой версии, перечислено на странице «Что нового»