forked from mirrors/qmk_userspace
		
	Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
				commit
				
					
						bffb209eee
					
				
			
		
					 8 changed files with 132 additions and 116 deletions
				
			
		| 
						 | 
					@ -9,7 +9,9 @@ from qmk.info import info_json
 | 
				
			||||||
from qmk.json_schema import json_load, validate
 | 
					from qmk.json_schema import json_load, validate
 | 
				
			||||||
from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
					from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
				
			||||||
from qmk.keymap import locate_keymap
 | 
					from qmk.keymap import locate_keymap
 | 
				
			||||||
 | 
					from qmk.commands import dump_lines
 | 
				
			||||||
from qmk.path import normpath
 | 
					from qmk.path import normpath
 | 
				
			||||||
 | 
					from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def direct_pins(direct_pins, postfix):
 | 
					def direct_pins(direct_pins, postfix):
 | 
				
			||||||
| 
						 | 
					@ -186,7 +188,7 @@ def generate_config_h(cli):
 | 
				
			||||||
        kb_info_json = dotty(info_json(cli.args.keyboard))
 | 
					        kb_info_json = dotty(info_json(cli.args.keyboard))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Build the info_config.h file.
 | 
					    # Build the info_config.h file.
 | 
				
			||||||
    config_h_lines = ['/* This file was generated by `qmk generate-config-h`. Do not edit or copy.', ' */', '', '#pragma once']
 | 
					    config_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    generate_config_items(kb_info_json, config_h_lines)
 | 
					    generate_config_items(kb_info_json, config_h_lines)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -199,16 +201,4 @@ def generate_config_h(cli):
 | 
				
			||||||
        generate_split_config(kb_info_json, config_h_lines)
 | 
					        generate_split_config(kb_info_json, config_h_lines)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Show the results
 | 
					    # Show the results
 | 
				
			||||||
    config_h = '\n'.join(config_h_lines)
 | 
					    dump_lines(cli.args.output, config_h_lines, cli.args.quiet)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if cli.args.output:
 | 
					 | 
				
			||||||
        cli.args.output.parent.mkdir(parents=True, exist_ok=True)
 | 
					 | 
				
			||||||
        if cli.args.output.exists():
 | 
					 | 
				
			||||||
            cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
 | 
					 | 
				
			||||||
        cli.args.output.write_text(config_h, encoding='utf-8')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if not cli.args.quiet:
 | 
					 | 
				
			||||||
            cli.log.info('Wrote info_config.h to %s.', cli.args.output)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        print(config_h)
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,8 @@ from qmk.decorators import automagic_keyboard
 | 
				
			||||||
from qmk.info import info_json
 | 
					from qmk.info import info_json
 | 
				
			||||||
from qmk.path import is_keyboard, normpath
 | 
					from qmk.path import is_keyboard, normpath
 | 
				
			||||||
from qmk.keyboard import keyboard_completer
 | 
					from qmk.keyboard import keyboard_completer
 | 
				
			||||||
 | 
					from qmk.commands import dump_lines
 | 
				
			||||||
 | 
					from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
 | 
					@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
 | 
				
			||||||
| 
						 | 
					@ -30,7 +32,7 @@ def generate_dfu_header(cli):
 | 
				
			||||||
    # Build the Keyboard.h file.
 | 
					    # Build the Keyboard.h file.
 | 
				
			||||||
    kb_info_json = dotty(info_json(cli.config.generate_dfu_header.keyboard))
 | 
					    kb_info_json = dotty(info_json(cli.config.generate_dfu_header.keyboard))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    keyboard_h_lines = ['/* This file was generated by `qmk generate-dfu-header`. Do not edit or copy.', ' */', '', '#pragma once']
 | 
					    keyboard_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once']
 | 
				
			||||||
    keyboard_h_lines.append(f'#define MANUFACTURER {kb_info_json["manufacturer"]}')
 | 
					    keyboard_h_lines.append(f'#define MANUFACTURER {kb_info_json["manufacturer"]}')
 | 
				
			||||||
    keyboard_h_lines.append(f'#define PRODUCT {kb_info_json["keyboard_name"]} Bootloader')
 | 
					    keyboard_h_lines.append(f'#define PRODUCT {kb_info_json["keyboard_name"]} Bootloader')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,16 +47,4 @@ def generate_dfu_header(cli):
 | 
				
			||||||
        keyboard_h_lines.append(f'#define QMK_SPEAKER {kb_info_json["qmk_lufa_bootloader.speaker"]}')
 | 
					        keyboard_h_lines.append(f'#define QMK_SPEAKER {kb_info_json["qmk_lufa_bootloader.speaker"]}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Show the results
 | 
					    # Show the results
 | 
				
			||||||
    keyboard_h = '\n'.join(keyboard_h_lines)
 | 
					    dump_lines(cli.args.output, keyboard_h_lines, cli.args.quiet)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if cli.args.output:
 | 
					 | 
				
			||||||
        cli.args.output.parent.mkdir(parents=True, exist_ok=True)
 | 
					 | 
				
			||||||
        if cli.args.output.exists():
 | 
					 | 
				
			||||||
            cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
 | 
					 | 
				
			||||||
        cli.args.output.write_text(keyboard_h)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if not cli.args.quiet:
 | 
					 | 
				
			||||||
            cli.log.info('Wrote Keyboard.h to %s.', cli.args.output)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        print(keyboard_h)
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,8 +3,10 @@
 | 
				
			||||||
from milc import cli
 | 
					from milc import cli
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from qmk.info import info_json
 | 
					from qmk.info import info_json
 | 
				
			||||||
 | 
					from qmk.commands import dump_lines
 | 
				
			||||||
from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
					from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
				
			||||||
from qmk.path import normpath
 | 
					from qmk.path import normpath
 | 
				
			||||||
 | 
					from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def would_populate_layout_h(keyboard):
 | 
					def would_populate_layout_h(keyboard):
 | 
				
			||||||
| 
						 | 
					@ -36,22 +38,10 @@ def generate_keyboard_h(cli):
 | 
				
			||||||
    has_layout_h = would_populate_layout_h(cli.args.keyboard)
 | 
					    has_layout_h = would_populate_layout_h(cli.args.keyboard)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Build the layouts.h file.
 | 
					    # Build the layouts.h file.
 | 
				
			||||||
    keyboard_h_lines = ['/* This file was generated by `qmk generate-keyboard-h`. Do not edit or copy.', ' */', '', '#pragma once', '#include "quantum.h"']
 | 
					    keyboard_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once', '#include "quantum.h"']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if not has_layout_h:
 | 
					    if not has_layout_h:
 | 
				
			||||||
        keyboard_h_lines.append('#pragma error("<keyboard>.h is only optional for data driven keyboards - kb.h == bad times")')
 | 
					        keyboard_h_lines.append('#pragma error("<keyboard>.h is only optional for data driven keyboards - kb.h == bad times")')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Show the results
 | 
					    # Show the results
 | 
				
			||||||
    keyboard_h = '\n'.join(keyboard_h_lines) + '\n'
 | 
					    dump_lines(cli.args.output, keyboard_h_lines, cli.args.quiet)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if cli.args.output:
 | 
					 | 
				
			||||||
        cli.args.output.parent.mkdir(parents=True, exist_ok=True)
 | 
					 | 
				
			||||||
        if cli.args.output.exists():
 | 
					 | 
				
			||||||
            cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
 | 
					 | 
				
			||||||
        cli.args.output.write_text(keyboard_h)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if not cli.args.quiet:
 | 
					 | 
				
			||||||
            cli.log.info('Wrote keyboard_h to %s.', cli.args.output)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        print(keyboard_h)
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,11 +2,12 @@
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
from milc import cli
 | 
					from milc import cli
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from qmk.constants import COL_LETTERS, ROW_LETTERS
 | 
					from qmk.constants import COL_LETTERS, ROW_LETTERS, GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
 | 
				
			||||||
from qmk.decorators import automagic_keyboard, automagic_keymap
 | 
					from qmk.decorators import automagic_keyboard, automagic_keymap
 | 
				
			||||||
from qmk.info import info_json
 | 
					from qmk.info import info_json
 | 
				
			||||||
from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
					from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
				
			||||||
from qmk.path import is_keyboard, normpath
 | 
					from qmk.path import is_keyboard, normpath
 | 
				
			||||||
 | 
					from qmk.commands import dump_lines
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usb_properties = {
 | 
					usb_properties = {
 | 
				
			||||||
    'vid': 'VENDOR_ID',
 | 
					    'vid': 'VENDOR_ID',
 | 
				
			||||||
| 
						 | 
					@ -38,7 +39,7 @@ def generate_layouts(cli):
 | 
				
			||||||
    kb_info_json = info_json(cli.config.generate_layouts.keyboard)
 | 
					    kb_info_json = info_json(cli.config.generate_layouts.keyboard)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Build the layouts.h file.
 | 
					    # Build the layouts.h file.
 | 
				
			||||||
    layouts_h_lines = ['/* This file was generated by `qmk generate-layouts`. Do not edit or copy.', ' */', '', '#pragma once']
 | 
					    layouts_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if 'matrix_size' not in kb_info_json:
 | 
					    if 'matrix_size' not in kb_info_json:
 | 
				
			||||||
        cli.log.error('%s: Invalid matrix config.', cli.config.generate_layouts.keyboard)
 | 
					        cli.log.error('%s: Invalid matrix config.', cli.config.generate_layouts.keyboard)
 | 
				
			||||||
| 
						 | 
					@ -86,16 +87,4 @@ def generate_layouts(cli):
 | 
				
			||||||
        layouts_h_lines.append('#endif')
 | 
					        layouts_h_lines.append('#endif')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Show the results
 | 
					    # Show the results
 | 
				
			||||||
    layouts_h = '\n'.join(layouts_h_lines) + '\n'
 | 
					    dump_lines(cli.args.output, layouts_h_lines, cli.args.quiet)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if cli.args.output:
 | 
					 | 
				
			||||||
        cli.args.output.parent.mkdir(parents=True, exist_ok=True)
 | 
					 | 
				
			||||||
        if cli.args.output.exists():
 | 
					 | 
				
			||||||
            cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
 | 
					 | 
				
			||||||
        cli.args.output.write_text(layouts_h)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if not cli.args.quiet:
 | 
					 | 
				
			||||||
            cli.log.info('Wrote info_config.h to %s.', cli.args.output)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        print(layouts_h)
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,9 @@ from qmk.info import info_json
 | 
				
			||||||
from qmk.json_schema import json_load, validate
 | 
					from qmk.json_schema import json_load, validate
 | 
				
			||||||
from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
					from qmk.keyboard import keyboard_completer, keyboard_folder
 | 
				
			||||||
from qmk.keymap import locate_keymap
 | 
					from qmk.keymap import locate_keymap
 | 
				
			||||||
 | 
					from qmk.commands import dump_lines
 | 
				
			||||||
from qmk.path import normpath
 | 
					from qmk.path import normpath
 | 
				
			||||||
 | 
					from qmk.constants import GPL2_HEADER_SH_LIKE, GENERATED_HEADER_SH_LIKE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def process_mapping_rule(kb_info_json, rules_key, info_dict):
 | 
					def process_mapping_rule(kb_info_json, rules_key, info_dict):
 | 
				
			||||||
| 
						 | 
					@ -57,7 +59,7 @@ def generate_rules_mk(cli):
 | 
				
			||||||
        kb_info_json = dotty(info_json(cli.args.keyboard))
 | 
					        kb_info_json = dotty(info_json(cli.args.keyboard))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    info_rules_map = json_load(Path('data/mappings/info_rules.json'))
 | 
					    info_rules_map = json_load(Path('data/mappings/info_rules.json'))
 | 
				
			||||||
    rules_mk_lines = ['# This file was generated by `qmk generate-rules-mk`. Do not edit or copy.', '']
 | 
					    rules_mk_lines = [GPL2_HEADER_SH_LIKE, GENERATED_HEADER_SH_LIKE]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Iterate through the info_rules map to generate basic rules
 | 
					    # Iterate through the info_rules map to generate basic rules
 | 
				
			||||||
    for rules_key, info_dict in info_rules_map.items():
 | 
					    for rules_key, info_dict in info_rules_map.items():
 | 
				
			||||||
| 
						 | 
					@ -85,14 +87,9 @@ def generate_rules_mk(cli):
 | 
				
			||||||
            rules_mk_lines.append('CUSTOM_MATRIX ?= yes')
 | 
					            rules_mk_lines.append('CUSTOM_MATRIX ?= yes')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Show the results
 | 
					    # Show the results
 | 
				
			||||||
    rules_mk = '\n'.join(rules_mk_lines) + '\n'
 | 
					    dump_lines(cli.args.output, rules_mk_lines)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if cli.args.output:
 | 
					    if cli.args.output:
 | 
				
			||||||
        cli.args.output.parent.mkdir(parents=True, exist_ok=True)
 | 
					 | 
				
			||||||
        if cli.args.output.exists():
 | 
					 | 
				
			||||||
            cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
 | 
					 | 
				
			||||||
        cli.args.output.write_text(rules_mk)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if cli.args.quiet:
 | 
					        if cli.args.quiet:
 | 
				
			||||||
            if cli.args.escape:
 | 
					            if cli.args.escape:
 | 
				
			||||||
                print(cli.args.output.as_posix().replace(' ', '\\ '))
 | 
					                print(cli.args.output.as_posix().replace(' ', '\\ '))
 | 
				
			||||||
| 
						 | 
					@ -100,6 +97,3 @@ def generate_rules_mk(cli):
 | 
				
			||||||
                print(cli.args.output)
 | 
					                print(cli.args.output)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            cli.log.info('Wrote rules.mk to %s.', cli.args.output)
 | 
					            cli.log.info('Wrote rules.mk to %s.', cli.args.output)
 | 
				
			||||||
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        print(rules_mk)
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,15 @@
 | 
				
			||||||
"""Used by the make system to generate version.h for use in code.
 | 
					"""Used by the make system to generate version.h for use in code.
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
 | 
					from time import strftime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from milc import cli
 | 
					from milc import cli
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from qmk.commands import create_version_h
 | 
					 | 
				
			||||||
from qmk.path import normpath
 | 
					from qmk.path import normpath
 | 
				
			||||||
 | 
					from qmk.commands import dump_lines
 | 
				
			||||||
 | 
					from qmk.commands import get_git_version
 | 
				
			||||||
 | 
					from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TIME_FMT = '%Y-%m-%d-%H:%M:%S'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
 | 
					@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
 | 
				
			||||||
| 
						 | 
					@ -17,15 +23,29 @@ def generate_version_h(cli):
 | 
				
			||||||
    if cli.args.skip_all:
 | 
					    if cli.args.skip_all:
 | 
				
			||||||
        cli.args.skip_git = True
 | 
					        cli.args.skip_git = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    version_h = create_version_h(cli.args.skip_git, cli.args.skip_all)
 | 
					    if cli.args.skip_all:
 | 
				
			||||||
 | 
					        current_time = "1970-01-01-00:00:00"
 | 
				
			||||||
    if cli.args.output:
 | 
					 | 
				
			||||||
        cli.args.output.parent.mkdir(parents=True, exist_ok=True)
 | 
					 | 
				
			||||||
        if cli.args.output.exists():
 | 
					 | 
				
			||||||
            cli.args.output.replace(cli.args.output.parent / (cli.args.output.name + '.bak'))
 | 
					 | 
				
			||||||
        cli.args.output.write_text(version_h)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if not cli.args.quiet:
 | 
					 | 
				
			||||||
            cli.log.info('Wrote version.h to %s.', cli.args.output)
 | 
					 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        print(version_h)
 | 
					        current_time = strftime(TIME_FMT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if cli.args.skip_git:
 | 
				
			||||||
 | 
					        git_version = "NA"
 | 
				
			||||||
 | 
					        chibios_version = "NA"
 | 
				
			||||||
 | 
					        chibios_contrib_version = "NA"
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        git_version = get_git_version(current_time)
 | 
				
			||||||
 | 
					        chibios_version = get_git_version(current_time, "chibios", "os")
 | 
				
			||||||
 | 
					        chibios_contrib_version = get_git_version(current_time, "chibios-contrib", "os")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Build the version.h file.
 | 
				
			||||||
 | 
					    version_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    version_h_lines.append(f"""
 | 
				
			||||||
 | 
					#define QMK_VERSION "{git_version}"
 | 
				
			||||||
 | 
					#define QMK_BUILDDATE "{current_time}"
 | 
				
			||||||
 | 
					#define CHIBIOS_VERSION "{chibios_version}"
 | 
				
			||||||
 | 
					#define CHIBIOS_CONTRIB_VERSION "{chibios_contrib_version}"
 | 
				
			||||||
 | 
					""")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Show the results
 | 
				
			||||||
 | 
					    dump_lines(cli.args.output, version_h_lines, cli.args.quiet)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,6 @@ import sys
 | 
				
			||||||
import shutil
 | 
					import shutil
 | 
				
			||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
from subprocess import DEVNULL
 | 
					from subprocess import DEVNULL
 | 
				
			||||||
from time import strftime
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
from milc import cli
 | 
					from milc import cli
 | 
				
			||||||
import jsonschema
 | 
					import jsonschema
 | 
				
			||||||
| 
						 | 
					@ -14,8 +13,6 @@ import qmk.keymap
 | 
				
			||||||
from qmk.constants import QMK_FIRMWARE, KEYBOARD_OUTPUT_PREFIX
 | 
					from qmk.constants import QMK_FIRMWARE, KEYBOARD_OUTPUT_PREFIX
 | 
				
			||||||
from qmk.json_schema import json_load, validate
 | 
					from qmk.json_schema import json_load, validate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
time_fmt = '%Y-%m-%d-%H:%M:%S'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def _find_make():
 | 
					def _find_make():
 | 
				
			||||||
    """Returns the correct make command for this environment.
 | 
					    """Returns the correct make command for this environment.
 | 
				
			||||||
| 
						 | 
					@ -136,37 +133,6 @@ def get_make_parallel_args(parallel=1):
 | 
				
			||||||
    return parallel_args
 | 
					    return parallel_args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def create_version_h(skip_git=False, skip_all=False):
 | 
					 | 
				
			||||||
    """Generate version.h contents
 | 
					 | 
				
			||||||
    """
 | 
					 | 
				
			||||||
    if skip_all:
 | 
					 | 
				
			||||||
        current_time = "1970-01-01-00:00:00"
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        current_time = strftime(time_fmt)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if skip_git:
 | 
					 | 
				
			||||||
        git_version = "NA"
 | 
					 | 
				
			||||||
        chibios_version = "NA"
 | 
					 | 
				
			||||||
        chibios_contrib_version = "NA"
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        git_version = get_git_version(current_time)
 | 
					 | 
				
			||||||
        chibios_version = get_git_version(current_time, "chibios", "os")
 | 
					 | 
				
			||||||
        chibios_contrib_version = get_git_version(current_time, "chibios-contrib", "os")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    version_h_lines = f"""/* This file was automatically generated. Do not edit or copy.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define QMK_VERSION "{git_version}"
 | 
					 | 
				
			||||||
#define QMK_BUILDDATE "{current_time}"
 | 
					 | 
				
			||||||
#define CHIBIOS_VERSION "{chibios_version}"
 | 
					 | 
				
			||||||
#define CHIBIOS_CONTRIB_VERSION "{chibios_contrib_version}"
 | 
					 | 
				
			||||||
"""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return version_h_lines
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_vars):
 | 
					def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_vars):
 | 
				
			||||||
    """Convert a configurator export JSON file into a C file and then compile it.
 | 
					    """Convert a configurator export JSON file into a C file and then compile it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -201,9 +167,6 @@ def compile_configurator_json(user_keymap, bootloader=None, parallel=1, **env_va
 | 
				
			||||||
    keymap_dir.mkdir(exist_ok=True, parents=True)
 | 
					    keymap_dir.mkdir(exist_ok=True, parents=True)
 | 
				
			||||||
    keymap_c.write_text(c_text)
 | 
					    keymap_c.write_text(c_text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    version_h = Path('quantum/version.h')
 | 
					 | 
				
			||||||
    version_h.write_text(create_version_h())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Return a command that can be run to make the keymap and flash if given
 | 
					    # Return a command that can be run to make the keymap and flash if given
 | 
				
			||||||
    verbose = 'true' if cli.config.general.verbose else 'false'
 | 
					    verbose = 'true' if cli.config.general.verbose else 'false'
 | 
				
			||||||
    color = 'true' if cli.config.general.color else 'false'
 | 
					    color = 'true' if cli.config.general.color else 'false'
 | 
				
			||||||
| 
						 | 
					@ -357,3 +320,20 @@ def in_virtualenv():
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    active_prefix = getattr(sys, "base_prefix", None) or getattr(sys, "real_prefix", None) or sys.prefix
 | 
					    active_prefix = getattr(sys, "base_prefix", None) or getattr(sys, "real_prefix", None) or sys.prefix
 | 
				
			||||||
    return active_prefix != sys.prefix
 | 
					    return active_prefix != sys.prefix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def dump_lines(output_file, lines, quiet=True):
 | 
				
			||||||
 | 
					    """Handle dumping to stdout or file
 | 
				
			||||||
 | 
					    Creates parent folders if required
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    generated = '\n'.join(lines) + '\n'
 | 
				
			||||||
 | 
					    if output_file and output_file.name != '-':
 | 
				
			||||||
 | 
					        output_file.parent.mkdir(parents=True, exist_ok=True)
 | 
				
			||||||
 | 
					        if output_file.exists():
 | 
				
			||||||
 | 
					            output_file.replace(output_file.parent / (output_file.name + '.bak'))
 | 
				
			||||||
 | 
					        output_file.write_text(generated, encoding='utf-8')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if not quiet:
 | 
				
			||||||
 | 
					            cli.log.info(f'Wrote {output_file.name} to {output_file}.')
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        print(generated)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
"""Information that should be available to the python library.
 | 
					"""Information that should be available to the python library.
 | 
				
			||||||
"""
 | 
					"""
 | 
				
			||||||
from os import environ
 | 
					from os import environ
 | 
				
			||||||
 | 
					from datetime import date
 | 
				
			||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# The root of the qmk_firmware tree.
 | 
					# The root of the qmk_firmware tree.
 | 
				
			||||||
| 
						 | 
					@ -75,3 +76,65 @@ LED_INDICATORS = {
 | 
				
			||||||
# Constants that should match their counterparts in make
 | 
					# Constants that should match their counterparts in make
 | 
				
			||||||
BUILD_DIR = environ.get('BUILD_DIR', '.build')
 | 
					BUILD_DIR = environ.get('BUILD_DIR', '.build')
 | 
				
			||||||
KEYBOARD_OUTPUT_PREFIX = f'{BUILD_DIR}/obj_'
 | 
					KEYBOARD_OUTPUT_PREFIX = f'{BUILD_DIR}/obj_'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Headers for generated files
 | 
				
			||||||
 | 
					GPL2_HEADER_C_LIKE = f'''\
 | 
				
			||||||
 | 
					// Copyright {date.today().year} QMK
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: GPL-2.0-or-later
 | 
				
			||||||
 | 
					'''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GPL2_HEADER_SH_LIKE = f'''\
 | 
				
			||||||
 | 
					# Copyright {date.today().year} QMK
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-2.0-or-later
 | 
				
			||||||
 | 
					'''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GENERATED_HEADER_C_LIKE = '''\
 | 
				
			||||||
 | 
					/*******************************************************************************
 | 
				
			||||||
 | 
					  88888888888 888      d8b                .d888 d8b 888               d8b
 | 
				
			||||||
 | 
					      888     888      Y8P               d88P"  Y8P 888               Y8P
 | 
				
			||||||
 | 
					      888     888                        888        888
 | 
				
			||||||
 | 
					      888     88888b.  888 .d8888b       888888 888 888  .d88b.       888 .d8888b
 | 
				
			||||||
 | 
					      888     888 "88b 888 88K           888    888 888 d8P  Y8b      888 88K
 | 
				
			||||||
 | 
					      888     888  888 888 "Y8888b.      888    888 888 88888888      888 "Y8888b.
 | 
				
			||||||
 | 
					      888     888  888 888      X88      888    888 888 Y8b.          888      X88
 | 
				
			||||||
 | 
					      888     888  888 888  88888P'      888    888 888  "Y8888       888  88888P'
 | 
				
			||||||
 | 
					                                                        888                 888
 | 
				
			||||||
 | 
					                                                        888                 888
 | 
				
			||||||
 | 
					                                                        888                 888
 | 
				
			||||||
 | 
					     .d88b.   .d88b.  88888b.   .d88b.  888d888 8888b.  888888 .d88b.   .d88888
 | 
				
			||||||
 | 
					    d88P"88b d8P  Y8b 888 "88b d8P  Y8b 888P"      "88b 888   d8P  Y8b d88" 888
 | 
				
			||||||
 | 
					    888  888 88888888 888  888 88888888 888    .d888888 888   88888888 888  888
 | 
				
			||||||
 | 
					    Y88b 888 Y8b.     888  888 Y8b.     888    888  888 Y88b. Y8b.     Y88b 888
 | 
				
			||||||
 | 
					     "Y88888  "Y8888  888  888  "Y8888  888    "Y888888  "Y888 "Y8888   "Y88888
 | 
				
			||||||
 | 
					         888
 | 
				
			||||||
 | 
					    Y8b d88P
 | 
				
			||||||
 | 
					     "Y88P"
 | 
				
			||||||
 | 
					*******************************************************************************/
 | 
				
			||||||
 | 
					'''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GENERATED_HEADER_SH_LIKE = '''\
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 88888888888 888      d8b                .d888 d8b 888               d8b
 | 
				
			||||||
 | 
					#     888     888      Y8P               d88P"  Y8P 888               Y8P
 | 
				
			||||||
 | 
					#     888     888                        888        888
 | 
				
			||||||
 | 
					#     888     88888b.  888 .d8888b       888888 888 888  .d88b.       888 .d8888b
 | 
				
			||||||
 | 
					#     888     888 "88b 888 88K           888    888 888 d8P  Y8b      888 88K
 | 
				
			||||||
 | 
					#     888     888  888 888 "Y8888b.      888    888 888 88888888      888 "Y8888b.
 | 
				
			||||||
 | 
					#     888     888  888 888      X88      888    888 888 Y8b.          888      X88
 | 
				
			||||||
 | 
					#     888     888  888 888  88888P'      888    888 888  "Y8888       888  88888P'
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#                                                       888                 888
 | 
				
			||||||
 | 
					#                                                       888                 888
 | 
				
			||||||
 | 
					#                                                       888                 888
 | 
				
			||||||
 | 
					#    .d88b.   .d88b.  88888b.   .d88b.  888d888 8888b.  888888 .d88b.   .d88888
 | 
				
			||||||
 | 
					#   d88P"88b d8P  Y8b 888 "88b d8P  Y8b 888P"      "88b 888   d8P  Y8b d88" 888
 | 
				
			||||||
 | 
					#   888  888 88888888 888  888 88888888 888    .d888888 888   88888888 888  888
 | 
				
			||||||
 | 
					#   Y88b 888 Y8b.     888  888 Y8b.     888    888  888 Y88b. Y8b.     Y88b 888
 | 
				
			||||||
 | 
					#    "Y88888  "Y8888  888  888  "Y8888  888    "Y888888  "Y888 "Y8888   "Y88888
 | 
				
			||||||
 | 
					#        888
 | 
				
			||||||
 | 
					#   Y8b d88P
 | 
				
			||||||
 | 
					#    "Y88P"
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					'''
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue