feat(update): владелец пакета вшивается в бинарь
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
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
- -X main.updateOwner (из vars.TC_GITEA_OWNER / Make UPDATE_OWNER), фоллбэк на update.owner в конфиге. - update.owner больше не обязателен: гейты в startAutoCheck и handleUpdateCmd требуют только update.base_url. - Обновлены main, app.New (сигнатура), CI, Makefile, тесты.
This commit is contained in:
@@ -41,7 +41,9 @@ type App struct {
|
||||
// version — вшитая версия бинаря (ldflag -X main.version).
|
||||
// updateToken — вшитый токен read:package для авто-обновления
|
||||
// (ldflag -X main.updateToken); имеет приоритет над update.token из конфига.
|
||||
func New(configPath, version, updateToken string) (*App, error) {
|
||||
// updateOwner — вшитый владелец Gitea-пакета (ldflag -X main.updateOwner);
|
||||
// имеет приоритет над update.owner из конфига.
|
||||
func New(configPath, version, updateToken, updateOwner string) (*App, error) {
|
||||
cfg, err := config.Load(configPath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%w: %v", ErrConfig, err)
|
||||
@@ -122,9 +124,14 @@ func New(configPath, version, updateToken string) (*App, error) {
|
||||
if udToken == "" {
|
||||
udToken = cfg.Update.Token
|
||||
}
|
||||
// Владелец пакета: вшитый updateOwner приоритетнее update.owner из конфига.
|
||||
udOwner := updateOwner
|
||||
if udOwner == "" {
|
||||
udOwner = cfg.Update.Owner
|
||||
}
|
||||
ud := &update.Updater{
|
||||
BaseURL: cfg.Update.BaseURL,
|
||||
Owner: cfg.Update.Owner,
|
||||
Owner: udOwner,
|
||||
Package: cfg.Update.Package,
|
||||
Token: udToken,
|
||||
CurrentVersion: version,
|
||||
@@ -293,8 +300,8 @@ func (a *App) startAutoCheck(ctx context.Context) {
|
||||
if !a.Config.Update.Enabled {
|
||||
return
|
||||
}
|
||||
if a.Updater == nil || a.Updater.BaseURL == "" || a.Updater.Owner == "" {
|
||||
log.Print("app: update авто-проверка выключена (не заполнен git.base_url / update.owner)")
|
||||
if a.Updater == nil || a.Updater.BaseURL == "" {
|
||||
log.Print("app: update авто-проверка выключена (не заполнен update.base_url)")
|
||||
return
|
||||
}
|
||||
interval := a.Config.Update.CheckInterval.Duration()
|
||||
@@ -376,8 +383,8 @@ func (a *App) version() string {
|
||||
// handleUpdateCmd — команда /update: Check → Download → Verify → Swap/Restart.
|
||||
// При активной задаче в чате — требует подтверждения, чтобы не прерывать работу.
|
||||
func (a *App) handleUpdateCmd(ctx context.Context, uid chat.UserID) {
|
||||
if a.Updater == nil || a.Updater.BaseURL == "" || a.Updater.Owner == "" {
|
||||
a.send(ctx, uid, "Обновление не настроено (нужен update.base_url и update.owner в config).")
|
||||
if a.Updater == nil || a.Updater.BaseURL == "" {
|
||||
a.send(ctx, uid, "Обновление не настроено (нужен update.base_url в config).")
|
||||
return
|
||||
}
|
||||
if !a.Config.Update.Enabled {
|
||||
|
||||
Reference in New Issue
Block a user