Files
ratatoskr-go/cmd/ratatoskr/main.go
Hermes 44ac7d73bb
All checks were successful
CI / test (push) Successful in 47s
CI / build-and-package (amd64, darwin) (push) Successful in 40s
CI / build-and-package (amd64, linux) (push) Successful in 40s
CI / build-and-package (amd64, windows) (push) Successful in 39s
CI / build-and-package (arm64, darwin) (push) Successful in 40s
CI / build-and-package (arm64, linux) (push) Successful in 40s
feat: автообновление бинаря из Gitea Packages (/update, /status, авто-уведомление)
2026-08-16 11:50:23 +05:00

56 lines
1.6 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"
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)
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)
}