logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

version_h.py (2135B)


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