Code cleanup, use pathlib, use pytest keyboard
Clean up checks and logics that are unnecessary due to MILC updates. Use pathlib instead of os.path for readability. Use the 'pytest' keyboard for the tests. Add community layout for 'handwired/onekey/pytest' so we can test community layouts.master
parent
8eeab1112a
commit
3db41817e0
|
@ -20,3 +20,4 @@ FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
|
||||||
|
|
||||||
DEFAULT_FOLDER = handwired/onekey/promicro
|
DEFAULT_FOLDER = handwired/onekey/promicro
|
||||||
|
LAYOUTS = ortho_1x1
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
[""]
|
|
@ -0,0 +1,12 @@
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
/* This keyboard/layout is used to test community layout discovery/compilation. */
|
||||||
|
|
||||||
|
#define _DEFAULT 0
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_DEFAULT] = LAYOUT (
|
||||||
|
KC_B
|
||||||
|
),
|
||||||
|
};
|
|
@ -10,17 +10,13 @@ from qmk.errors import NoSuchKeyboardError
|
||||||
def list_keymaps(cli):
|
def list_keymaps(cli):
|
||||||
"""List the keymaps for a specific keyboard
|
"""List the keymaps for a specific keyboard
|
||||||
"""
|
"""
|
||||||
# ask for user input if keyboard was not provided in the command line
|
|
||||||
if cli.args.keyboard:
|
|
||||||
cli.config.list_keymaps.keyboard = cli.args.keyboard
|
|
||||||
elif not cli.config.list_keymaps.keyboard:
|
|
||||||
cli.config.list_keymaps.keyboard = input("Keyboard Name: ")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for name in qmk.keymap.list_keymaps(cli.config.list_keymaps.keyboard):
|
for name in qmk.keymap.list_keymaps(cli.config.list_keymaps.keyboard):
|
||||||
# We echo instead of cli.log.info to allow easier piping of this output
|
# We echo instead of cli.log.info to allow easier piping of this output
|
||||||
cli.echo('%s:%s', cli.config.list_keymaps.keyboard, name)
|
cli.echo('%s', name)
|
||||||
except NoSuchKeyboardError as e:
|
except NoSuchKeyboardError as e:
|
||||||
cli.echo("{fg_red}%s: %s", cli.config.list_keymaps.keyboard, e.message)
|
cli.echo("{fg_red}%s: %s", cli.config.list_keymaps.keyboard, e.message)
|
||||||
except (FileNotFoundError, PermissionError) as e:
|
except (FileNotFoundError, PermissionError) as e:
|
||||||
cli.echo("{fg_red}%s: %s", cli.config.list_keymaps.keyboard, e)
|
cli.echo("{fg_red}%s: %s", cli.config.list_keymaps.keyboard, e)
|
||||||
|
except TypeError:
|
||||||
|
cli.echo("{fg_red}Something went wrong. Did you specify a keyboard?")
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
""" Functions for working with Makefiles
|
""" Functions for working with Makefiles
|
||||||
"""
|
"""
|
||||||
import os
|
from pathlib import Path
|
||||||
|
|
||||||
import qmk.path
|
|
||||||
from qmk.errors import NoSuchKeyboardError
|
from qmk.errors import NoSuchKeyboardError
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,8 +18,9 @@ def parse_rules_mk_file(file, rules_mk=None):
|
||||||
if not rules_mk:
|
if not rules_mk:
|
||||||
rules_mk = {}
|
rules_mk = {}
|
||||||
|
|
||||||
if os.path.exists(file):
|
file = Path(file)
|
||||||
rules_mk_lines = qmk.path.file_lines(file)
|
if file.exists():
|
||||||
|
rules_mk_lines = file.read_text().split("\n")
|
||||||
|
|
||||||
for line in rules_mk_lines:
|
for line in rules_mk_lines:
|
||||||
# Filter out comments
|
# Filter out comments
|
||||||
|
@ -66,15 +66,16 @@ def get_rules_mk(keyboard):
|
||||||
a dictionary with the content of the rules.mk file
|
a dictionary with the content of the rules.mk file
|
||||||
"""
|
"""
|
||||||
# Start with qmk_firmware/keyboards
|
# Start with qmk_firmware/keyboards
|
||||||
kb_path = os.path.join(os.getcwd(), "keyboards")
|
kb_path = Path.cwd() / "keyboards"
|
||||||
# walk down the directory tree
|
# walk down the directory tree
|
||||||
# and collect all rules.mk files
|
# and collect all rules.mk files
|
||||||
if os.path.exists(os.path.join(kb_path, keyboard)):
|
kb_dir = kb_path / keyboard
|
||||||
|
if kb_dir.exists():
|
||||||
rules_mk = dict()
|
rules_mk = dict()
|
||||||
for directory in keyboard.split(os.path.sep):
|
for directory in Path(keyboard).parts:
|
||||||
kb_path = os.path.join(kb_path, directory)
|
kb_path = kb_path / directory
|
||||||
rules_mk_path = os.path.join(kb_path, "rules.mk")
|
rules_mk_path = kb_path / "rules.mk"
|
||||||
if os.path.exists(rules_mk_path):
|
if rules_mk_path.exists():
|
||||||
rules_mk = parse_rules_mk_file(rules_mk_path, rules_mk)
|
rules_mk = parse_rules_mk_file(rules_mk_path, rules_mk)
|
||||||
else:
|
else:
|
||||||
raise NoSuchKeyboardError("The requested keyboard and/or revision does not exist.")
|
raise NoSuchKeyboardError("The requested keyboard and/or revision does not exist.")
|
||||||
|
|
|
@ -33,16 +33,3 @@ def normpath(path):
|
||||||
return os.path.normpath(path)
|
return os.path.normpath(path)
|
||||||
|
|
||||||
return os.path.normpath(os.path.join(os.environ['ORIG_CWD'], path))
|
return os.path.normpath(os.path.join(os.environ['ORIG_CWD'], path))
|
||||||
|
|
||||||
|
|
||||||
def file_lines(filename):
|
|
||||||
""" Return a files content, line by line
|
|
||||||
|
|
||||||
Args:
|
|
||||||
filename: path to the file
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
an list, in which each item is a line of the file
|
|
||||||
"""
|
|
||||||
with open(filename, "r") as fd:
|
|
||||||
return fd.readlines()
|
|
||||||
|
|
|
@ -57,9 +57,9 @@ def test_list_keyboards():
|
||||||
|
|
||||||
|
|
||||||
def test_list_keymaps():
|
def test_list_keymaps():
|
||||||
result = check_subcommand("list-keymaps", "-kb", "planck/ez")
|
result = check_subcommand("list-keymaps", "-kb", "handwired/onekey/pytest")
|
||||||
assert result.returncode == 0
|
assert result.returncode == 0
|
||||||
assert "planck/ez:default" and "planck/ez:drashna" in result.stdout
|
assert "default" and "test" in result.stdout
|
||||||
|
|
||||||
|
|
||||||
def test_list_keymaps_no_keyboard_found():
|
def test_list_keymaps_no_keyboard_found():
|
||||||
|
|
Loading…
Reference in New Issue