mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-07 01:15:33 +00:00
44 lines
1.6 KiB
Python
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)
|