mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-23 16:17:40 +00:00
add some docstring
This commit is contained in:
parent
6d6316f53f
commit
c6eafb6d41
4 changed files with 162 additions and 3 deletions
|
|
@ -1,7 +1,5 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
# Get a kmp file given a keyboard id
|
||||
|
||||
import sys
|
||||
import datetime
|
||||
import time
|
||||
|
|
@ -9,9 +7,17 @@ import json
|
|||
import requests
|
||||
import requests_cache
|
||||
import os
|
||||
#from tqdm import tqdm
|
||||
|
||||
def get_keyboard_data(keyboardid, verbose=False):
|
||||
"""
|
||||
Get Keyboard data from web api.
|
||||
|
||||
Args:
|
||||
keyboardid (str): Keyboard ID
|
||||
verbose(bool, default False): verbose output
|
||||
Returns:
|
||||
dict: Keyboard data
|
||||
"""
|
||||
if verbose:
|
||||
print("Getting data for keyboard", keyboardid)
|
||||
api_url = "https://api.keyman.com/keyboard/" + keyboardid
|
||||
|
|
@ -37,10 +43,25 @@ def get_keyboard_data(keyboardid, verbose=False):
|
|||
return None
|
||||
|
||||
def get_download_folder():
|
||||
"""
|
||||
Folder where downloaded files will be saved.
|
||||
|
||||
Returns:
|
||||
str: path of user downloads folder
|
||||
"""
|
||||
home = os.path.expanduser("~")
|
||||
return os.path.join(home, "Downloads")
|
||||
|
||||
def get_kmp_file(kbdata, verbose=False):
|
||||
"""
|
||||
Get info from keyboard data to download kmp then download it.
|
||||
|
||||
Args:
|
||||
kbdata (dict): Keyboard data
|
||||
verbose (bool, default False): verbose output
|
||||
Returns:
|
||||
str: path where kmp file has been downloaded
|
||||
"""
|
||||
if 'packageFilename' not in kbdata:
|
||||
print("get_kmp.py: Keyboard does not have a kmp file available")
|
||||
return None
|
||||
|
|
@ -50,6 +71,16 @@ def get_kmp_file(kbdata, verbose=False):
|
|||
return download_kmp_file(kmp_url, downloadfile, verbose)
|
||||
|
||||
def download_kmp_file(url, kmpfile, verbose=False):
|
||||
"""
|
||||
Download kmp file.
|
||||
|
||||
Args:
|
||||
url (str): URL to download the kmp file from.
|
||||
kmpfile (str): Where to save the kmp file.
|
||||
verbose (bool, default False): verbose output
|
||||
Returns:
|
||||
str: path where kmp file has been downloaded
|
||||
"""
|
||||
if verbose:
|
||||
print("Download URL:", url)
|
||||
downloadfile = None
|
||||
|
|
@ -61,6 +92,14 @@ def download_kmp_file(url, kmpfile, verbose=False):
|
|||
return downloadfile
|
||||
|
||||
def get_kmp(keyboardid):
|
||||
"""
|
||||
Download a kmp file given a keyboard id.
|
||||
|
||||
Args:
|
||||
keyboardid (str): Keyboard ID
|
||||
Returns:
|
||||
str: path where kmp file has been downloaded
|
||||
"""
|
||||
kbdata = get_keyboard_data(keyboardid)
|
||||
if (kbdata):
|
||||
return get_kmp_file(kbdata)
|
||||
|
|
|
|||
|
|
@ -50,6 +50,23 @@ def print_keyboards(keyboards):
|
|||
pass
|
||||
|
||||
def determine_filetype(filename):
|
||||
"""
|
||||
Determine file type of a filename in a kmp from the extension
|
||||
|
||||
Args:
|
||||
filename (str): File name
|
||||
|
||||
Returns:
|
||||
str: Description of file type
|
||||
Keyboard icon
|
||||
Keyboard source
|
||||
Compiled keyboard
|
||||
Compiled on screen keyboard
|
||||
Font
|
||||
Documentation
|
||||
Metadata
|
||||
Image
|
||||
"""
|
||||
name, ext = os.path.splitext(filename)
|
||||
if ext == ".ico":
|
||||
return "Keyboard icon"
|
||||
|
|
@ -92,6 +109,43 @@ def print_files(files, extracted_dir):
|
|||
pass
|
||||
|
||||
def parseinfdata(inffile, verbose=False):
|
||||
"""
|
||||
Parse the metadata in a kmp.inf file.
|
||||
|
||||
Args:
|
||||
jsonfile (str): Path to kmp.inf
|
||||
verbose (bool, default False): verbose output
|
||||
|
||||
Returns:
|
||||
list[5]: info, system, options, keyboards, files
|
||||
info (dict):
|
||||
name (dict):
|
||||
description (str): KMP name
|
||||
copyright (dict):
|
||||
description (str): KMP copyright
|
||||
version (dict):
|
||||
description (str): KMP version
|
||||
author (dict):
|
||||
description (str): KMP author
|
||||
url (str): contact url for the author
|
||||
system (dict): System info
|
||||
fileVersion (str): Keyman file format version
|
||||
keymanDeveloperVersion (str): Keyman Developer version that compiled keyboard
|
||||
options (dict): Keyboard options
|
||||
readmeFile (str) : README for the keyboard
|
||||
keyboards (list): Keyboards in the kmp
|
||||
name (str): Keyboard name
|
||||
id (str): Keyboard ID
|
||||
version (str): Keyboard version
|
||||
oskFont (str, optional): Recommended on screen keyboard font
|
||||
displayFont (str, optional): Recommended display font
|
||||
languages (list): Languages the keyboard is used for
|
||||
name (str): Language name
|
||||
id (str): Language ID
|
||||
files (list): Files in the kmp
|
||||
name (str): File name
|
||||
description (str): File description
|
||||
"""
|
||||
info = system = keyboards = files = options = nonexistent = None
|
||||
extracted_dir = os.path.dirname(inffile)
|
||||
|
||||
|
|
@ -172,6 +226,43 @@ def parseinfdata(inffile, verbose=False):
|
|||
return info, system, options, keyboards, files
|
||||
|
||||
def parsemetadata(jsonfile, verbose=False):
|
||||
"""
|
||||
Parse the metadata in a kmp.json file.
|
||||
|
||||
Args:
|
||||
jsonfile (str): Path to kmp.json
|
||||
verbose (bool, default False): verbose output
|
||||
|
||||
Returns:
|
||||
list[5]: info, system, options, keyboards, files
|
||||
info (dict):
|
||||
name (dict):
|
||||
description (str): KMP name
|
||||
copyright (dict):
|
||||
description (str): KMP copyright
|
||||
version (dict):
|
||||
description (str): KMP version
|
||||
author (dict):
|
||||
description (str): KMP author
|
||||
url (str): contact url for the author
|
||||
system (dict): System info
|
||||
fileVersion (str): Keyman file format version
|
||||
keymanDeveloperVersion (str): Keyman Developer version that compiled keyboard
|
||||
options (dict): Keyboard options
|
||||
readmeFile (str) : README for the keyboard
|
||||
keyboards (list): Keyboards in the kmp
|
||||
name (str): Keyboard name
|
||||
id (str): Keyboard ID
|
||||
version (str): Keyboard version
|
||||
oskFont (str, optional): Recommended on screen keyboard font
|
||||
displayFont (str, optional): Recommended display font
|
||||
languages (list): Languages the keyboard is used for
|
||||
name (str): Language name
|
||||
id (str): Language ID
|
||||
files (list): Files in the kmp
|
||||
name (str): File name
|
||||
description (str): File description
|
||||
"""
|
||||
info = system = keyboards = files = options = nonexistent = None
|
||||
extracted_dir = os.path.dirname(jsonfile)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,20 @@ from kmpmetadata import parsemetadata
|
|||
from get_kmp import get_keyboard_data
|
||||
|
||||
def get_installed_kmp():
|
||||
"""
|
||||
Get list of installed keyboards.
|
||||
|
||||
Returns:
|
||||
list: Installed keyboards
|
||||
dict: Keyboard
|
||||
id (str): Keyboard ID
|
||||
name (str): Keyboard name
|
||||
kmpname (str): Keyboard name in local
|
||||
version (str): Keyboard version
|
||||
kmpversion (str):
|
||||
path (str): base path where keyboard is installed
|
||||
description (str): Keyboard description
|
||||
"""
|
||||
installed_keyboards = {}
|
||||
check_paths = [ "/usr/share/keyman", "/usr/local/share/keyman" ]
|
||||
for keymanpath in check_paths:
|
||||
|
|
@ -37,6 +51,15 @@ def get_installed_kmp():
|
|||
|
||||
|
||||
def get_kmp_version(keyboardid):
|
||||
"""
|
||||
Get version of the kmp for a keyboard ID.
|
||||
|
||||
Args:
|
||||
keyboardid (dict): Keyboard ID
|
||||
Returns:
|
||||
str: kmp version if keyboard ID is installed
|
||||
None: if not found
|
||||
"""
|
||||
installed_kmp = get_installed_kmp()
|
||||
if keyboardid in installed_kmp:
|
||||
return installed_kmp[keyboardid]['version']
|
||||
|
|
|
|||
|
|
@ -5,6 +5,12 @@ import os.path
|
|||
from shutil import rmtree
|
||||
|
||||
def uninstall_kmp(keyboardid):
|
||||
"""
|
||||
Uninstall a kmp from /usr/local/share/keyman
|
||||
|
||||
Args:
|
||||
keyboardid (str): Keyboard ID
|
||||
"""
|
||||
kbdir = os.path.join('/usr/local/share/keyman', keyboardid)
|
||||
if not os.path.isdir(kbdir):
|
||||
print("Keyboard directory for", keyboardid, "does not exist. Aborting")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue