qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

version_h.py (2306B)


      1 """Used by the make system to generate version.h for use in code.
      2 """
      3 from time import strftime
      4 
      5 from milc import cli
      6 
      7 from qmk.path import normpath
      8 from qmk.commands import dump_lines
      9 from qmk.git import git_get_qmk_hash, git_get_version, git_is_dirty
     10 from qmk.constants import GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE
     11 from qmk.util import triplet_to_bcd
     12 
     13 TIME_FMT = '%Y-%m-%d-%H:%M:%S'
     14 
     15 
     16 @cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
     17 @cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
     18 @cli.argument('--skip-git', arg_only=True, action='store_true', help='Skip Git operations')
     19 @cli.argument('--skip-all', arg_only=True, action='store_true', help='Use placeholder values for all defines (implies --skip-git)')
     20 @cli.subcommand('Used by the make system to generate version.h for use in code', hidden=True)
     21 def generate_version_h(cli):
     22     """Generates the version.h file.
     23     """
     24     if cli.args.skip_all:
     25         cli.args.skip_git = True
     26 
     27     if cli.args.skip_all:
     28         current_time = "1970-01-01-00:00:00"
     29     else:
     30         current_time = strftime(TIME_FMT)
     31 
     32     if cli.args.skip_git:
     33         git_dirty = False
     34         git_version = "NA"
     35         git_qmk_hash = "NA"
     36         git_bcd_version = "0x00000000"
     37         chibios_version = "NA"
     38         chibios_contrib_version = "NA"
     39     else:
     40         git_dirty = git_is_dirty()
     41         git_version = git_get_version() or current_time
     42         git_qmk_hash = git_get_qmk_hash() or "Unknown"
     43         git_bcd_version = triplet_to_bcd(git_version)
     44         chibios_version = git_get_version("chibios", "os") or current_time
     45         chibios_contrib_version = git_get_version("chibios-contrib", "os") or current_time
     46 
     47     # Build the version.h file.
     48     version_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once']
     49 
     50     version_h_lines.append(
     51         f"""
     52 #define QMK_VERSION "{git_version}"
     53 #define QMK_BUILDDATE "{current_time}"
     54 #define QMK_VERSION_BCD {git_bcd_version}
     55 #define QMK_GIT_HASH  "{git_qmk_hash}{'*' if git_dirty else ''}"
     56 #define CHIBIOS_VERSION "{chibios_version}"
     57 #define CHIBIOS_CONTRIB_VERSION "{chibios_contrib_version}"
     58 """
     59     )
     60 
     61     # Show the results
     62     dump_lines(cli.args.output, version_h_lines, cli.args.quiet)