Files
ratatoskr-go/cmd/ratatoskr/main.go
Hermes 4de6a4241a
All checks were successful
CI / test (push) Successful in 43s
CI / build-and-package (amd64, darwin) (push) Successful in 40s
CI / build-and-package (amd64, linux) (push) Successful in 39s
CI / build-and-package (amd64, windows) (push) Successful in 39s
CI / build-and-package (arm64, darwin) (push) Successful in 36s
CI / build-and-package (arm64, linux) (push) Successful in 39s
feat(update): отдельный update.base_url и вшитый токен read:package
- update.base_url (env UPDATE_BASE_URL) — хост обновления, БЕЗ фоллбэка на git.base_url: пустое значение отключает update.
- Убран git.token из пути обновления: теперь отдельный токен.
- Токен read:package вшивается при сборке (-X main.updateToken из секрета TC_UPDATE_TOKEN), приоритет над update.token из конфига.
- Обновлены app.New (сигнатура), main, Makefile, CI, config.example, тесты.
2026-08-16 12:20:53 +05:00

61 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Command ratatoskr — оркестратор конвейера Ratatoskr (единый бинарь).
//
// Запуск: ratatoskr [-config config.yaml]
// config.yaml ищется в CWD, по умолчанию — env/дефолты.
package main
import (
"context"
"flag"
"fmt"
"log"
"os"
"github.com/kamelion/ratatoskr-go/internal/app"
)
// version — версия бинаря, вшивается при сборке:
// go build -ldflags "-X main.version=<commit-sha7>"
// Локальная сборка без ldflags оставляет "dev".
var version = "dev"
// updateToken — токен read:package для авто-обновления, вшивается при сборке:
// go build -ldflags "-X main.updateToken=<token>"
// Без ldflags — пустой; тогда используется update.token из конфига (если задан).
var updateToken = ""
func main() {
cfg := flag.String("config", "", "путь к config.yaml (по умолчанию — CWD/config.yaml)")
versionFlag := flag.Bool("version", false, "показать версию и выйти")
flag.Parse()
if *versionFlag {
fmt.Println("ratatoskr-go " + version)
return
}
a, err := app.New(*cfg, version, updateToken)
if err != nil {
log.Fatalf("app init: %v", err)
}
defer func() {
if a.Store != nil {
a.Store.Close()
}
}()
// Применить отложенный свап обновления (из предыдущего /update на Windows
// или отложенной замены), если есть .new рядом с бинарём. До старта подсистем.
if a.Updater != nil {
if err := a.Updater.ApplyPendingSwap(); err != nil {
log.Printf("ratatoskr: apply-pending-swap: %v", err)
}
}
log.Print("ratatoskr: запущен")
if err := a.Run(context.Background()); err != nil {
log.Fatalf("app run: %v", err)
}
log.Print("ratatoskr: остановлен")
os.Exit(0)
}