mirror of
https://github.com/raspberrypi/pico-sdk.git
synced 2025-04-19 12:02:14 +03:00
59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Generate a version header for the Bazel build.
|
|
|
|
Splits a semantic version string into major, minor, and patch and uses the
|
|
provided template to produce a working version header.
|
|
"""
|
|
|
|
import argparse
|
|
import re
|
|
import sys
|
|
|
|
|
|
def _parse_args():
|
|
parser = argparse.ArgumentParser(
|
|
description=__doc__,
|
|
)
|
|
parser.add_argument(
|
|
"--version-string",
|
|
required=True,
|
|
help="SDK version string",
|
|
)
|
|
parser.add_argument(
|
|
"--template",
|
|
type=argparse.FileType("r"),
|
|
required=True,
|
|
help="Path to version.h.in",
|
|
)
|
|
parser.add_argument(
|
|
"-o",
|
|
"--output",
|
|
type=argparse.FileType("wb"),
|
|
default=sys.stdout.buffer,
|
|
help="Output file path. Defaults to stdout.",
|
|
)
|
|
return parser.parse_args()
|
|
|
|
|
|
_EXPANSION_REGEX = re.compile(r"(?:\$\{)([a-zA-Z]\w*)(?:\})")
|
|
|
|
|
|
def generate_version_header(version_string, template, output):
|
|
version_parts = version_string.split('.')
|
|
defines = {
|
|
"PICO_SDK_VERSION_MAJOR": version_parts[0],
|
|
"PICO_SDK_VERSION_MINOR": version_parts[1],
|
|
"PICO_SDK_VERSION_REVISION": version_parts[2].split('-')[0],
|
|
"PICO_SDK_VERSION_STRING": version_string,
|
|
}
|
|
output.write(
|
|
_EXPANSION_REGEX.sub(
|
|
lambda val: str(defines.get(val.group(1))),
|
|
template.read(),
|
|
).encode()
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(generate_version_header(**vars(_parse_args())))
|