QMK CLI and JSON keymap support (#6176)
* Script to generate keymap.c from JSON file. * Support for keymap.json * Add a warning about the keymap.c getting overwritten. * Fix keymap generating * Install the python deps * Flesh out more of the python environment * Remove defunct json2keymap * Style everything with yapf * Polish up python support * Hide json keymap.c into the .build dir * Polish up qmk-compile-json * Make milc work with positional arguments * Fix a couple small things * Fix some errors and make the CLI more understandable * Make the qmk wrapper more robust * Add basic QMK Doctor * Clean up docstrings and flesh them out as needed * remove unused compile_firmware() function
This commit is contained in:
		
							parent
							
								
									7ba82cb5b7
								
							
						
					
					
						commit
						a25dd58bc5
					
				
					 34 changed files with 1988 additions and 83 deletions
				
			
		| 
						 | 
				
			
			@ -98,31 +98,38 @@ MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
 | 
			
		|||
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
 | 
			
		||||
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
 | 
			
		||||
 | 
			
		||||
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
 | 
			
		||||
    -include $(MAIN_KEYMAP_PATH_5)/rules.mk
 | 
			
		||||
    KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
 | 
			
		||||
    KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
 | 
			
		||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
 | 
			
		||||
    -include $(MAIN_KEYMAP_PATH_4)/rules.mk
 | 
			
		||||
    KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
 | 
			
		||||
    KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
 | 
			
		||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
 | 
			
		||||
    -include $(MAIN_KEYMAP_PATH_3)/rules.mk
 | 
			
		||||
    KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
 | 
			
		||||
    KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
 | 
			
		||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
 | 
			
		||||
    -include $(MAIN_KEYMAP_PATH_2)/rules.mk
 | 
			
		||||
    KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
 | 
			
		||||
    KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
 | 
			
		||||
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
 | 
			
		||||
    -include $(MAIN_KEYMAP_PATH_1)/rules.mk
 | 
			
		||||
    KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
 | 
			
		||||
    KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
 | 
			
		||||
else ifneq ($(LAYOUTS),)
 | 
			
		||||
    include build_layout.mk
 | 
			
		||||
else
 | 
			
		||||
    $(error Could not find keymap)
 | 
			
		||||
    # this state should never be reached
 | 
			
		||||
# Check for keymap.json first, so we can regenerate keymap.c
 | 
			
		||||
include build_json.mk
 | 
			
		||||
 | 
			
		||||
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
 | 
			
		||||
    # Look through the possible keymap folders until we find a matching keymap.c
 | 
			
		||||
    ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
 | 
			
		||||
        -include $(MAIN_KEYMAP_PATH_5)/rules.mk
 | 
			
		||||
        KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
 | 
			
		||||
        KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
 | 
			
		||||
    else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
 | 
			
		||||
        -include $(MAIN_KEYMAP_PATH_4)/rules.mk
 | 
			
		||||
        KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
 | 
			
		||||
        KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
 | 
			
		||||
    else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
 | 
			
		||||
        -include $(MAIN_KEYMAP_PATH_3)/rules.mk
 | 
			
		||||
        KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
 | 
			
		||||
        KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
 | 
			
		||||
    else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
 | 
			
		||||
        -include $(MAIN_KEYMAP_PATH_2)/rules.mk
 | 
			
		||||
        KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
 | 
			
		||||
        KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
 | 
			
		||||
    else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
 | 
			
		||||
        -include $(MAIN_KEYMAP_PATH_1)/rules.mk
 | 
			
		||||
        KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
 | 
			
		||||
        KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
 | 
			
		||||
    else ifneq ($(LAYOUTS),)
 | 
			
		||||
        # If we haven't found a keymap yet fall back to community layouts
 | 
			
		||||
        include build_layout.mk
 | 
			
		||||
    else
 | 
			
		||||
        $(error Could not find keymap)
 | 
			
		||||
        # this state should never be reached
 | 
			
		||||
    endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(CTPC)), yes)
 | 
			
		||||
| 
						 | 
				
			
			@ -313,7 +320,6 @@ ifneq ("$(wildcard $(USER_PATH)/config.h)","")
 | 
			
		|||
    CONFIG_H += $(USER_PATH)/config.h
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Object files directory
 | 
			
		||||
#     To put object files in current directory, use a dot (.), do NOT make
 | 
			
		||||
#     this an empty or blank macro!
 | 
			
		||||
| 
						 | 
				
			
			@ -323,7 +329,7 @@ ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
 | 
			
		|||
    CONFIG_H += $(KEYMAP_PATH)/config.h
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# # project specific files
 | 
			
		||||
# project specific files
 | 
			
		||||
SRC += $(KEYBOARD_SRC) \
 | 
			
		||||
    $(KEYMAP_C) \
 | 
			
		||||
    $(QUANTUM_SRC)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue