Files
ratatoskr-go/cmd/ratatoskr/main.go
Hermes 8fcafcdffd
All checks were successful
CI / test (push) Successful in 42s
CI / build-and-package (amd64, darwin) (push) Successful in 39s
CI / build-and-package (amd64, linux) (push) Successful in 42s
CI / build-and-package (amd64, windows) (push) Successful in 41s
CI / build-and-package (arm64, darwin) (push) Successful in 48s
CI / build-and-package (arm64, linux) (push) Successful in 47s
feat(update): владелец пакета вшивается в бинарь
- -X main.updateOwner (из vars.TC_GITEA_OWNER / Make UPDATE_OWNER), фоллбэк на update.owner в конфиге.
- update.owner больше не обязателен: гейты в startAutoCheck и handleUpdateCmd требуют только update.base_url.
- Обновлены main, app.New (сигнатура), CI, Makefile, тесты.
2026-08-16 12:33:17 +05:00

66 lines
2.3 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 = ""
// updateOwner — владелец Gitea-пакета (обычно git-юзер), вшивается при сборке:
// go build -ldflags "-X main.updateOwner=kamelion"
// Без ldflags — пустой; тогда используется update.owner из конфига (если задан).
var updateOwner = ""
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, updateOwner)
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)
}