@ -12,21 +12,30 @@ from qmk.json_encoders import InfoJSONEncoder
fromqmk.json_schemaimportjson_load
fromqmk.keyboardimportfind_readme,list_keyboards
TEMPLATE_PATH=Path('data/templates/api/')
DATA_PATH=Path('data')
TEMPLATE_PATH=DATA_PATH/'templates/api/'
BUILD_API_PATH=Path('.build/api_data/')
def_filtered_keyboard_list():
"""Perform basic filtering of list_keyboards
"""
keyboard_list=list_keyboards()
ifcli.args.filter:
kb_list=[]
forkeyboard_nameinkeyboard_list:
ifany(iinkeyboard_nameforiincli.args.filter):
kb_list.append(keyboard_name)
keyboard_list=kb_list
returnkeyboard_list
@cli.argument('-n','--dry-run',arg_only=True,action='store_true',help="Don't write the data to disk.")
@cli.argument('-f','--filter',arg_only=True,action='append',default=[],help="Filter the list of keyboards based on partial name matches the supplied value. May be passed multiple times.")
@cli.subcommand('Creates a new keymap for the keyboard of your choosing',hidden=Falseifcli.config.user.developerelseTrue)
@cli.subcommand('Generate QMK API data',hidden=Falseifcli.config.user.developerelseTrue)
defgenerate_api(cli):
"""Generates the QMK API data.
"""
ifBUILD_API_PATH.exists():
shutil.rmtree(BUILD_API_PATH)
shutil.copytree(TEMPLATE_PATH,BUILD_API_PATH)
v1_dir=BUILD_API_PATH/'v1'
keyboard_all_file=v1_dir/'keyboards.json'# A massive JSON containing everything
keyboard_list_file=v1_dir/'keyboard_list.json'# A simple list of keyboard targets
@ -34,14 +43,14 @@ def generate_api(cli):
keyboard_metadata_file=v1_dir/'keyboard_metadata.json'# All the data configurator/via needs for initialization
usb_file=v1_dir/'usb.json'# A mapping of USB VID/PID -> keyboard target