fix(linux): display error and abort if fonttools are missing

This commit is contained in:
Eberhard Beilharz 2024-08-28 16:14:17 +07:00
parent 50228a8266
commit 5b570517b1
No known key found for this signature in database
GPG key ID: E9140597606020D3
3 changed files with 32 additions and 2 deletions

View file

@ -1,5 +1,6 @@
import atexit
import gettext
import importlib
import logging
import os
import pathlib
@ -53,6 +54,14 @@ def initialize_sentry():
SentryErrorHandling().initialize_sentry()
def are_requirements_missing():
try:
ttLib = importlib.import_module('fontTools.ttLib')
except ImportError:
return True
return False
class FileCleanup():
"""
Allow to register files that will be deleted when the process exits

View file

@ -9,7 +9,10 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from keyman_config import __versionwithtag__, __pkgversion__, add_standard_arguments, initialize_logging, initialize_sentry, verify_dbus_running
from keyman_config import (
_, __versionwithtag__, __pkgversion__, add_standard_arguments,
are_requirements_missing, initialize_logging, initialize_sentry,
verify_dbus_running)
from keyman_config.handle_install import download_and_install_package
from keyman_config.ibus_util import verify_ibus_daemon
from keyman_config.view_installed import ViewInstalledWindow
@ -42,6 +45,18 @@ if __name__ == '__main__':
initialize_sentry()
verify_dbus_running()
if are_requirements_missing():
if args.install or args.url:
logging.error('Missing requirements. Please install python3-fonttools.')
else:
dialog = Gtk.MessageDialog(
None, 0, Gtk.MessageType.ERROR,
Gtk.ButtonsType.OK, _("Missing requirements. Please install python3-fonttools."))
dialog.run()
dialog.destroy()
sys.exit(1)
logging.info('Keyman version %s %s', __versionwithtag__, __pkgversion__)
verify_ibus_daemon(False)

View file

@ -5,7 +5,9 @@ import logging
import os
import sys
from keyman_config import add_standard_arguments, initialize_logging, initialize_sentry, verify_dbus_running
from keyman_config import (
are_requirements_missing, add_standard_arguments, initialize_logging,
initialize_sentry, verify_dbus_running)
from keyman_config.kvk2ldml import parse_kvk_file, print_kvk, convert_ldml, output_ldml
@ -25,6 +27,10 @@ def main():
initialize_sentry()
verify_dbus_running()
if are_requirements_missing():
logging.error('km-kvk2ldml: Missing requirements. Please install python3-fonttools.')
sys.exit(1)
name, ext = os.path.splitext(args.kvkfile)
# Check if input file extension is kvk
if ext != ".kvk":