mirror of
https://github.com/qmk/qmk_firmware.git
synced 2026-08-04 16:30:55 -04:00
Merge remote-tracking branch 'origin/develop' into xap
This commit is contained in:
@@ -6,6 +6,7 @@ import shutil
|
||||
from datetime import date
|
||||
from pathlib import Path
|
||||
from dotty_dict import dotty
|
||||
from functools import lru_cache
|
||||
|
||||
from milc import cli
|
||||
from milc.questions import choice, question, yesno
|
||||
@@ -20,17 +21,28 @@ from qmk.constants import MCU2BOOTLOADER, QMK_FIRMWARE
|
||||
COMMUNITY = Path('layouts/default/')
|
||||
TEMPLATE = Path('data/templates/keyboard/')
|
||||
|
||||
# defaults
|
||||
schema = dotty(load_jsonschema('keyboard'))
|
||||
mcu_types = sorted(schema["properties.processor.enum"], key=str.casefold)
|
||||
dev_boards = sorted(schema["properties.development_board.enum"], key=str.casefold)
|
||||
available_layouts = sorted([x.name for x in COMMUNITY.iterdir() if x.is_dir()])
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def _keyboard_schema():
|
||||
return dotty(load_jsonschema('keyboard'))
|
||||
|
||||
|
||||
def _processor_types():
|
||||
return sorted(_keyboard_schema()["properties.processor.enum"], key=str.casefold)
|
||||
|
||||
|
||||
def _dev_boards():
|
||||
return sorted(_keyboard_schema()["properties.development_board.enum"], key=str.casefold)
|
||||
|
||||
|
||||
def _available_layouts():
|
||||
return sorted([x.name for x in COMMUNITY.iterdir() if x.is_dir()])
|
||||
|
||||
|
||||
def mcu_type(mcu):
|
||||
"""Callable for argparse validation.
|
||||
"""
|
||||
if mcu not in (dev_boards + mcu_types):
|
||||
if mcu not in (_dev_boards() + _processor_types()):
|
||||
raise ValueError
|
||||
return mcu
|
||||
|
||||
@@ -38,7 +50,7 @@ def mcu_type(mcu):
|
||||
def layout_type(layout):
|
||||
"""Callable for argparse validation.
|
||||
"""
|
||||
if layout not in available_layouts:
|
||||
if layout not in _available_layouts():
|
||||
raise ValueError
|
||||
return layout
|
||||
|
||||
@@ -162,7 +174,7 @@ def prompt_layout():
|
||||
bootstrap the process""")
|
||||
|
||||
# avoid overwhelming user - remove some?
|
||||
filtered_layouts = [x for x in available_layouts if not any(xs in x for xs in ['_split', '_blocker', '_tsangan', '_f13'])]
|
||||
filtered_layouts = [x for x in _available_layouts() if not any(xs in x for xs in ['_split', '_blocker', '_tsangan', '_f13'])]
|
||||
filtered_layouts.append("none of the above")
|
||||
|
||||
return choice("Default Layout?", filtered_layouts, default=len(filtered_layouts) - 1)
|
||||
@@ -184,7 +196,7 @@ def prompt_dev_board():
|
||||
prompt_heading_subheading("Select Development Board", """For more information, see:
|
||||
https://docs.qmk.fm/compatible_microcontrollers""")
|
||||
|
||||
filtered_dev_boards = dev_boards.copy()
|
||||
filtered_dev_boards = _dev_boards()
|
||||
filtered_dev_boards.append("none of the above")
|
||||
|
||||
return choice("Development Board?", filtered_dev_boards, default=len(filtered_dev_boards) - 1)
|
||||
@@ -195,7 +207,7 @@ def prompt_mcu():
|
||||
https://docs.qmk.fm/compatible_microcontrollers""")
|
||||
|
||||
# remove any options strictly used for compatibility
|
||||
filtered_mcu = [x for x in mcu_types if not any(xs in x for xs in ['cortex', 'unknown'])]
|
||||
filtered_mcu = [x for x in _processor_types() if not any(xs in x for xs in ['cortex', 'unknown'])]
|
||||
|
||||
return choice("Microcontroller?", filtered_mcu, default=filtered_mcu.index("atmega32u4"))
|
||||
|
||||
@@ -235,7 +247,7 @@ def new_keyboard(cli):
|
||||
mcu = prompt_mcu()
|
||||
|
||||
config = {}
|
||||
if mcu in dev_boards:
|
||||
if mcu in _dev_boards():
|
||||
config['development_board'] = mcu
|
||||
else:
|
||||
config['processor'] = mcu
|
||||
|
||||
Reference in New Issue
Block a user