* Use pathlib everywhere we can * Update lib/python/qmk/path.py Co-Authored-By: Erovia <Erovia@users.noreply.github.com> * Update lib/python/qmk/path.py Co-Authored-By: Erovia <Erovia@users.noreply.github.com> * Improvements based on @erovia's feedback * rework qmk compile and qmk flash to use pathlib * style * Remove the subcommand_name argument from find_keyboard_keymap() Co-authored-by: Erovia <Erovia@users.noreply.github.com>
		
			
				
	
	
		
			29 lines
		
	
	
		
			945 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			945 B
		
	
	
	
		
			Python
		
	
	
	
	
	
"""List the keyboards currently defined within QMK
 | 
						|
"""
 | 
						|
# We avoid pathlib here because this is performance critical code.
 | 
						|
import os
 | 
						|
import glob
 | 
						|
 | 
						|
from milc import cli
 | 
						|
 | 
						|
BASE_PATH = os.path.join(os.getcwd(), "keyboards") + os.path.sep
 | 
						|
KB_WILDCARD = os.path.join(BASE_PATH, "**", "rules.mk")
 | 
						|
 | 
						|
 | 
						|
def find_name(path):
 | 
						|
    """Determine the keyboard name by stripping off the base_path and rules.mk.
 | 
						|
    """
 | 
						|
    return path.replace(BASE_PATH, "").replace(os.path.sep + "rules.mk", "")
 | 
						|
 | 
						|
 | 
						|
@cli.subcommand("List the keyboards currently defined within QMK")
 | 
						|
def list_keyboards(cli):
 | 
						|
    """List the keyboards currently defined within QMK
 | 
						|
    """
 | 
						|
    # find everywhere we have rules.mk where keymaps isn't in the path
 | 
						|
    paths = [path for path in glob.iglob(KB_WILDCARD, recursive=True) if 'keymaps' not in path]
 | 
						|
 | 
						|
    # Extract the keyboard name from the path and print it
 | 
						|
    for keyboard_name in sorted(map(find_name, paths)):
 | 
						|
        print(keyboard_name)
 |