diff options
Diffstat (limited to 'lib/python/qmk/cli')
| -rwxr-xr-x | lib/python/qmk/cli/generate/config_h.py | 18 | ||||
| -rw-r--r-- | lib/python/qmk/cli/generate/dfu_header.py | 18 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/generate/keyboard_h.py | 18 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/generate/layouts.py | 19 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/generate/rules_mk.py | 14 | ||||
| -rw-r--r-- | lib/python/qmk/cli/generate/version_h.py | 42 | 
6 files changed, 51 insertions, 78 deletions
| diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py index 340ed10436..adefdb5732 100755 --- a/lib/python/qmk/cli/generate/config_h.py +++ b/lib/python/qmk/cli/generate/config_h.py @@ -9,7 +9,9 @@ from qmk.info import info_json  from qmk.json_schema import json_load, validate  from qmk.keyboard import keyboard_completer, keyboard_folder  from qmk.keymap import locate_keymap +from qmk.commands import dump_lines  from qmk.path import normpath +from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE  def direct_pins(direct_pins, postfix): @@ -186,7 +188,7 @@ def generate_config_h(cli):          kb_info_json = dotty(info_json(cli.args.keyboard))      # 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) @@ -199,16 +201,4 @@ def generate_config_h(cli):          generate_split_config(kb_info_json, config_h_lines)      # Show the results -    config_h = '\n'.join(config_h_lines) - -    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) +    dump_lines(cli.args.output, config_h_lines, cli.args.quiet) diff --git a/lib/python/qmk/cli/generate/dfu_header.py b/lib/python/qmk/cli/generate/dfu_header.py index 7fb585fc7d..e873117387 100644 --- a/lib/python/qmk/cli/generate/dfu_header.py +++ b/lib/python/qmk/cli/generate/dfu_header.py @@ -7,6 +7,8 @@ from qmk.decorators import automagic_keyboard  from qmk.info import info_json  from qmk.path import is_keyboard, normpath  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') @@ -30,7 +32,7 @@ def generate_dfu_header(cli):      # Build the Keyboard.h file.      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 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"]}')      # Show the results -    keyboard_h = '\n'.join(keyboard_h_lines) - -    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) +    dump_lines(cli.args.output, keyboard_h_lines, cli.args.quiet) diff --git a/lib/python/qmk/cli/generate/keyboard_h.py b/lib/python/qmk/cli/generate/keyboard_h.py index f05178cede..2058865cbf 100755 --- a/lib/python/qmk/cli/generate/keyboard_h.py +++ b/lib/python/qmk/cli/generate/keyboard_h.py @@ -3,8 +3,10 @@  from milc import cli  from qmk.info import info_json +from qmk.commands import dump_lines  from qmk.keyboard import keyboard_completer, keyboard_folder  from qmk.path import normpath +from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE  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)      # 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:          keyboard_h_lines.append('#pragma error("<keyboard>.h is only optional for data driven keyboards - kb.h == bad times")')      # Show the results -    keyboard_h = '\n'.join(keyboard_h_lines) + '\n' - -    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) +    dump_lines(cli.args.output, keyboard_h_lines, cli.args.quiet) diff --git a/lib/python/qmk/cli/generate/layouts.py b/lib/python/qmk/cli/generate/layouts.py index a21311bd49..193633baf6 100755 --- a/lib/python/qmk/cli/generate/layouts.py +++ b/lib/python/qmk/cli/generate/layouts.py @@ -2,11 +2,12 @@  """  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.info import info_json  from qmk.keyboard import keyboard_completer, keyboard_folder  from qmk.path import is_keyboard, normpath +from qmk.commands import dump_lines  usb_properties = {      'vid': 'VENDOR_ID', @@ -38,7 +39,7 @@ def generate_layouts(cli):      kb_info_json = info_json(cli.config.generate_layouts.keyboard)      # 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:          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')      # Show the results -    layouts_h = '\n'.join(layouts_h_lines) + '\n' - -    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) +    dump_lines(cli.args.output, layouts_h_lines, cli.args.quiet) diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py index a1b10cc945..6f342c6567 100755 --- a/lib/python/qmk/cli/generate/rules_mk.py +++ b/lib/python/qmk/cli/generate/rules_mk.py @@ -9,7 +9,9 @@ from qmk.info import info_json  from qmk.json_schema import json_load, validate  from qmk.keyboard import keyboard_completer, keyboard_folder  from qmk.keymap import locate_keymap +from qmk.commands import dump_lines  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): @@ -57,7 +59,7 @@ def generate_rules_mk(cli):          kb_info_json = dotty(info_json(cli.args.keyboard))      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      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')      # Show the results -    rules_mk = '\n'.join(rules_mk_lines) + '\n' +    dump_lines(cli.args.output, rules_mk_lines)      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.escape:                  print(cli.args.output.as_posix().replace(' ', '\\ ')) @@ -100,6 +97,3 @@ def generate_rules_mk(cli):                  print(cli.args.output)          else:              cli.log.info('Wrote rules.mk to %s.', cli.args.output) - -    else: -        print(rules_mk) diff --git a/lib/python/qmk/cli/generate/version_h.py b/lib/python/qmk/cli/generate/version_h.py index 69341e36f0..be9646748e 100644 --- a/lib/python/qmk/cli/generate/version_h.py +++ b/lib/python/qmk/cli/generate/version_h.py @@ -1,9 +1,15 @@  """Used by the make system to generate version.h for use in code.  """ +from time import strftime +  from milc import cli -from qmk.commands import create_version_h  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') @@ -17,15 +23,29 @@ def generate_version_h(cli):      if cli.args.skip_all:          cli.args.skip_git = True -    version_h = create_version_h(cli.args.skip_git, cli.args.skip_all) - -    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 cli.args.skip_all: +        current_time = "1970-01-01-00:00:00" +    else: +        current_time = strftime(TIME_FMT) -        if not cli.args.quiet: -            cli.log.info('Wrote version.h to %s.', cli.args.output) +    if cli.args.skip_git: +        git_version = "NA" +        chibios_version = "NA" +        chibios_contrib_version = "NA"      else: -        print(version_h) +        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) | 
