Fix CLI incorrectly following DEFAULT_FOLDER (#12529)

* Attempt to sort out incorrectly following DEFAULT_FOLDER.

* Fix CI checks.

* qmk pyformat
This commit is contained in:
Nick Brassel 2021-04-25 11:15:54 +10:00 committed by GitHub
parent 0c50a9eae9
commit b88498ba85
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -92,7 +92,16 @@ def list_keyboards():
kb_wildcard = os.path.join(base_path, "**", "rules.mk") kb_wildcard = os.path.join(base_path, "**", "rules.mk")
paths = [path for path in glob(kb_wildcard, recursive=True) if 'keymaps' not in path] paths = [path for path in glob(kb_wildcard, recursive=True) if 'keymaps' not in path]
return sorted(map(_find_name, paths)) return sorted(set(map(resolve_keyboard, map(_find_name, paths))))
def resolve_keyboard(keyboard):
cur_dir = Path('keyboards')
rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
while 'DEFAULT_FOLDER' in rules and keyboard != rules['DEFAULT_FOLDER']:
keyboard = rules['DEFAULT_FOLDER']
rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
return keyboard
def config_h(keyboard): def config_h(keyboard):
@ -106,8 +115,7 @@ def config_h(keyboard):
""" """
config = {} config = {}
cur_dir = Path('keyboards') cur_dir = Path('keyboards')
rules = rules_mk(keyboard) keyboard = Path(resolve_keyboard(keyboard))
keyboard = Path(rules['DEFAULT_FOLDER'] if 'DEFAULT_FOLDER' in rules else keyboard)
for dir in keyboard.parts: for dir in keyboard.parts:
cur_dir = cur_dir / dir cur_dir = cur_dir / dir
@ -125,13 +133,10 @@ def rules_mk(keyboard):
Returns: Returns:
a dictionary representing the content of the entire rules.mk tree for a keyboard a dictionary representing the content of the entire rules.mk tree for a keyboard
""" """
keyboard = Path(keyboard)
cur_dir = Path('keyboards') cur_dir = Path('keyboards')
keyboard = Path(resolve_keyboard(keyboard))
rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk') rules = parse_rules_mk_file(cur_dir / keyboard / 'rules.mk')
if 'DEFAULT_FOLDER' in rules:
keyboard = Path(rules['DEFAULT_FOLDER'])
for i, dir in enumerate(keyboard.parts): for i, dir in enumerate(keyboard.parts):
cur_dir = cur_dir / dir cur_dir = cur_dir / dir
rules = parse_rules_mk_file(cur_dir / 'rules.mk', rules) rules = parse_rules_mk_file(cur_dir / 'rules.mk', rules)