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

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
@@ -0,0 +1,25 @@
package quikexport
import (
"os"
"path/filepath"
"testing"
)
func TestExporterVersion(t *testing.T) {
dir := t.TempDir()
// В программе встречаются и чужие версии библиотек — берётся та, что совпадает с установщиком.
bin := []byte("\x00ELF\x008.0.4.2\x00codecvt\x0012.1.5.2\x000123456789\x00")
if err := os.WriteFile(filepath.Join(dir, "export"), bin, 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dir, ".actions.log"), []byte("[14/09/26][./install_quikexport-12.1.5.run][root] Done\n"), 0o644); err != nil {
t.Fatal(err)
}
if v := exporterVersion(dir); v != "12.1.5.2" {
t.Fatalf("версия экспортёра = %q", v)
}
if v := exporterVersion(t.TempDir()); v != "" {
t.Fatalf("без экспортёра версия должна быть пустой, получено %q", v)
}
}