mirror of
https://github.com/qmk/qmk_firmware
synced 2024-11-19 03:36:28 +00:00
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
"""Used by the make system to generate version.h for use in code.
|
|
"""
|
|
from time import strftime
|
|
|
|
from milc import cli
|
|
|
|
from qmk.path import normpath
|
|
from qmk.commands import dump_lines
|
|
from qmk.git import git_get_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('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
|
|
@cli.argument('--skip-git', arg_only=True, action='store_true', help='Skip Git operations')
|
|
@cli.argument('--skip-all', arg_only=True, action='store_true', help='Use placeholder values for all defines (implies --skip-git)')
|
|
@cli.subcommand('Used by the make system to generate version.h for use in code', hidden=True)
|
|
def generate_version_h(cli):
|
|
"""Generates the version.h file.
|
|
"""
|
|
if cli.args.skip_all:
|
|
cli.args.skip_git = True
|
|
|
|
if cli.args.skip_all:
|
|
current_time = "1970-01-01-00:00:00"
|
|
else:
|
|
current_time = strftime(TIME_FMT)
|
|
|
|
if cli.args.skip_git:
|
|
git_version = "NA"
|
|
chibios_version = "NA"
|
|
chibios_contrib_version = "NA"
|
|
else:
|
|
git_version = git_get_version() or current_time
|
|
chibios_version = git_get_version("chibios", "os") or current_time
|
|
chibios_contrib_version = git_get_version("chibios-contrib", "os") or current_time
|
|
|
|
# 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)
|