feat: автообновление бинаря из Gitea Packages (/update, /status, авто-уведомление)
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

This commit is contained in:
Hermes
2026-08-16 11:50:23 +05:00
parent bd3d825738
commit 44ac7d73bb
9 changed files with 775 additions and 14 deletions

View File

@@ -14,17 +14,22 @@ import (
"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)")
version := flag.Bool("version", false, "показать версию и выйти")
versionFlag := flag.Bool("version", false, "показать версию и выйти")
flag.Parse()
if *version {
fmt.Println("ratatoskr-go dev (переезд с Ratatoskr Python)")
if *versionFlag {
fmt.Println("ratatoskr-go " + version)
return
}
a, err := app.New(*cfg)
a, err := app.New(*cfg, version)
if err != nil {
log.Fatalf("app init: %v", err)
}
@@ -34,6 +39,14 @@ func main() {
}
}()
// Применить отложенный свап обновления (из предыдущего /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)