vorta/src/vorta/updater.py

49 lines
1.5 KiB
Python

import os
import sys
from vorta.store.models import SettingsModel
def get_updater():
if sys.platform == 'darwin' and getattr(sys, 'frozen', False):
"""
Use Sparkle framework on macOS.
Settings: https://sparkle-project.org/documentation/customization/
Examples: https://programtalk.com/python-examples/objc.loadBundle/
To debug:
$ defaults read com.borgbase.client.macos
"""
import Cocoa
import objc
bundle_path = os.path.join(
os.path.dirname(sys.executable),
os.pardir,
'Frameworks',
'Sparkle.framework',
)
objc.loadBundle('Sparkle', globals(), bundle_path)
sparkle = SUUpdater.sharedUpdater() # noqa: F821
# A default Appcast URL is set in vorta.spec, when setting it here it's saved to defaults,
# so we need both cases.
if SettingsModel.get(key='updates_include_beta').value:
appcast_nsurl = Cocoa.NSURL.URLWithString_('https://borgbase.github.io/vorta/appcast-pre.xml')
else:
appcast_nsurl = Cocoa.NSURL.URLWithString_('https://borgbase.github.io/vorta/appcast.xml')
sparkle.setFeedURL_(appcast_nsurl)
if SettingsModel.get(key='check_for_updates').value:
sparkle.setAutomaticallyChecksForUpdates_(True)
sparkle.checkForUpdatesInBackground()
sparkle.setAutomaticallyDownloadsUpdates_(False)
return sparkle
else: # TODO: implement for Linux
return None