mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-11 05:06:51 +00:00
GODT-1977: fix launcher for v2 to v3 updates.
This commit is contained in:
@ -61,3 +61,7 @@ func (i *InstallerDarwin) InstallUpdate(_ *semver.Version, r io.Reader) error {
|
||||
|
||||
return syncFolders(oldBundle, newBundle)
|
||||
}
|
||||
|
||||
func (i *InstallerDarwin) IsAlreadyInstalled(version *semver.Version) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import (
|
||||
|
||||
"github.com/Masterminds/semver/v3"
|
||||
"github.com/ProtonMail/proton-bridge/v2/internal/versioner"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type InstallerDefault struct {
|
||||
@ -40,3 +41,15 @@ func NewInstaller(versioner *versioner.Versioner) *InstallerDefault {
|
||||
func (i *InstallerDefault) InstallUpdate(version *semver.Version, r io.Reader) error {
|
||||
return i.versioner.InstallNewVersion(version, r)
|
||||
}
|
||||
|
||||
func (i *InstallerDefault) IsAlreadyInstalled(version *semver.Version) bool {
|
||||
versions, err := i.versioner.ListVersions()
|
||||
if err != nil {
|
||||
logrus.WithField("version", version).
|
||||
WithError(err).Error("Failed to determine whether version is installed")
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
return versions.HasVersion(version)
|
||||
}
|
||||
|
||||
@ -30,8 +30,9 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
ErrDownloadVerify = errors.New("failed to download or verify the update")
|
||||
ErrInstall = errors.New("failed to install the update")
|
||||
ErrDownloadVerify = errors.New("failed to download or verify the update")
|
||||
ErrInstall = errors.New("failed to install the update")
|
||||
ErrUpdateAlreadyInstalled = errors.New("update is already installed")
|
||||
)
|
||||
|
||||
type Downloader interface {
|
||||
@ -39,6 +40,7 @@ type Downloader interface {
|
||||
}
|
||||
|
||||
type Installer interface {
|
||||
IsAlreadyInstalled(*semver.Version) bool
|
||||
InstallUpdate(*semver.Version, io.Reader) error
|
||||
}
|
||||
|
||||
@ -84,6 +86,10 @@ func (u *Updater) GetVersionInfo(ctx context.Context, downloader Downloader, cha
|
||||
}
|
||||
|
||||
func (u *Updater) InstallUpdate(ctx context.Context, downloader Downloader, update VersionInfo) error {
|
||||
if u.installer.IsAlreadyInstalled(update.Version) {
|
||||
return ErrUpdateAlreadyInstalled
|
||||
}
|
||||
|
||||
b, err := downloader.DownloadAndVerify(
|
||||
ctx,
|
||||
u.verifier,
|
||||
|
||||
Reference in New Issue
Block a user