spiegel-keyman/linux/keyman-config/keyman_config/get_info.py
2022-07-18 17:10:01 +02:00

44 lines
1.6 KiB
Python

#!/usr/bin/python3
import logging
import os
import threading
from keyman_config import secure_lookup
from keyman_config.install_kmp import process_keyboard_data
from keyman_config.kmpmetadata import parsemetadata
class GetInfo(object):
""" Get information about kmp packages and keyboards
The run() method will be started and it will run in the background.
"""
def __init__(self, kmp_list):
""" Constructor
:type kmp_list: list
:param kmp_list: List of keyboards to get info for
"""
self.kmp_list = kmp_list
thread = threading.Thread(target=self.run, args=())
thread.daemon = True # Daemonize thread
thread.start() # Start the execution
def run(self):
""" Method that gets info for installed kmp that were installed manually
rather then from the download window.
"""
for kmp in self.kmp_list:
packageId = secure_lookup(kmp, 'packageID')
areapath = secure_lookup(kmp, 'areapath')
if not areapath or not packageId:
logging.warning('corrupt kmp list')
return
packageDir = os.path.join(areapath, packageId)
process_keyboard_data(packageId, packageDir)
info, system, options, keyboards, files = parsemetadata(packageDir, "kmp.json")
if keyboards:
for kb in keyboards:
if kb['id'] != packageId:
process_keyboard_data(kb['id'], packageDir)