Версии систем: общий список в «Обзоре» и строка в разделе каждого модуля

bj собирает версии своих компонентов и внешних систем (в фоне, кэш 10 минут, прогрев при старте):
ядро и модули bj (components.json или «-version»), экспортёр ARQA (служба bj-quikexport, /version),
криптосервис (Health), «Валидата CSP» (zpki1utl), Java, ИШ НРД (deps.json + сайт НРД),
МНП QUIK (VersionInfo), DEPO (OD_DATA_VERSION), PostgreSQL, ОС. «Настройка → Обзор» — таблица
«Версии систем» с кнопкой «Обновить сведения»; в разделах БД, Fancy, QUIK МНП, Экспорт QUIK,
Криптография, НРД, ЛК, НПР и Обновления — строка с версией. В таблице обновлений у компонентов,
выложенных вручную, вместо «неизвестна» — версия самого компонента. bj-component-install: -version.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-16 12:00:00 +03:00
parent 6fee3c5ff7
commit 7c653a2490
15 changed files with 523 additions and 3 deletions
+8
View File
@@ -22,12 +22,20 @@ import (
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/release"
)
// version — версия установщика (go build -ldflags "-X main.version=…").
var version = "0.1.0"
func main() {
fs := flag.NewFlagSet("bj-component-install", flag.ExitOnError)
root := fs.String("root", "", "корень установки (для проверки в песочнице; по умолчанию /)")
pubPath := fs.String("pub", "/etc/bj/update.pub", "открытый ключ подписи релизов (base64 Ed25519), файл root")
noRestart := fs.Bool("no-restart", false, "не перезапускать службы")
showVersion := fs.Bool("version", false, "показать версию")
_ = fs.Parse(os.Args[1:])
if *showVersion {
fmt.Println("bj-component-install", version)
return
}
var res release.InstallResult
if pub, err := release.LoadPublicKey(*pubPath); err != nil {
res.Error = fmt.Sprintf("открытый ключ обновлений (%s): %v", *pubPath, err)