fix(GODT-3094): Clean up old update files on bridge startup.

This commit is contained in:
Romain LE JEUNE
2023-11-02 10:43:55 +01:00
parent 1ac4e70115
commit 6cb233473a
6 changed files with 24 additions and 3 deletions

View File

@ -276,6 +276,9 @@ func run(c *cli.Context) error {
b.PushError(bridge.ErrVaultCorrupt) b.PushError(bridge.ErrVaultCorrupt)
} }
// Remove old updates files
b.RemoveOldUpdates()
// Start telemetry heartbeat process // Start telemetry heartbeat process
b.StartHeartbeat(b) b.StartHeartbeat(b)

View File

@ -155,7 +155,7 @@ func newUpdater(locations *locations.Locations) (*updater.Updater, error) {
} }
return updater.NewUpdater( return updater.NewUpdater(
updater.NewInstaller(versioner.New(updatesDir)), versioner.New(updatesDir),
verifier, verifier,
constants.UpdateName, constants.UpdateName,
runtime.GOOS, runtime.GOOS,

View File

@ -154,3 +154,7 @@ func (testUpdater *TestUpdater) GetVersionInfo(_ context.Context, _ updater.Down
func (testUpdater *TestUpdater) InstallUpdate(_ context.Context, _ updater.Downloader, _ updater.VersionInfo) error { func (testUpdater *TestUpdater) InstallUpdate(_ context.Context, _ updater.Downloader, _ updater.VersionInfo) error {
return nil return nil
} }
func (testUpdater *TestUpdater) RemoveOldUpdates() error {
return nil
}

View File

@ -53,4 +53,5 @@ type Autostarter interface {
type Updater interface { type Updater interface {
GetVersionInfo(context.Context, updater.Downloader, updater.Channel) (updater.VersionInfo, error) GetVersionInfo(context.Context, updater.Downloader, updater.Channel) (updater.VersionInfo, error)
InstallUpdate(context.Context, updater.Downloader, updater.VersionInfo) error InstallUpdate(context.Context, updater.Downloader, updater.VersionInfo) error
RemoveOldUpdates() error
} }

View File

@ -139,3 +139,9 @@ func (bridge *Bridge) installUpdate(ctx context.Context, job installJob) {
} }
}, bridge.newVersionLock) }, bridge.newVersionLock)
} }
func (bridge *Bridge) RemoveOldUpdates() {
if err := bridge.updater.RemoveOldUpdates(); err != nil {
logrus.WithError(err).Error("Remove old updates fails")
}
}

View File

@ -26,6 +26,7 @@ import (
"github.com/Masterminds/semver/v3" "github.com/Masterminds/semver/v3"
"github.com/ProtonMail/gopenpgp/v2/crypto" "github.com/ProtonMail/gopenpgp/v2/crypto"
"github.com/ProtonMail/proton-bridge/v3/internal/versioner"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
@ -46,15 +47,17 @@ type Installer interface {
} }
type Updater struct { type Updater struct {
versioner *versioner.Versioner
installer Installer installer Installer
verifier *crypto.KeyRing verifier *crypto.KeyRing
product string product string
platform string platform string
} }
func NewUpdater(installer Installer, verifier *crypto.KeyRing, product, platform string) *Updater { func NewUpdater(ver *versioner.Versioner, verifier *crypto.KeyRing, product, platform string) *Updater {
return &Updater{ return &Updater{
installer: installer, versioner: ver,
installer: NewInstaller(ver),
verifier: verifier, verifier: verifier,
product: product, product: product,
platform: platform, platform: platform,
@ -109,6 +112,10 @@ func (u *Updater) InstallUpdate(ctx context.Context, downloader Downloader, upda
return nil return nil
} }
func (u *Updater) RemoveOldUpdates() error {
return u.versioner.RemoveOldVersions()
}
// getVersionFileURL returns the URL of the version file. // getVersionFileURL returns the URL of the version file.
// For example: // For example:
// - https://protonmail.com/download/bridge/version_linux.json // - https://protonmail.com/download/bridge/version_linux.json