File: actions_semver.py

package info (click to toggle)
robotraconteur 1.2.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 101,380 kB
  • sloc: cpp: 1,149,268; cs: 87,653; java: 58,127; python: 26,897; ansic: 356; sh: 152; makefile: 90; xml: 51
file content (44 lines) | stat: -rw-r--r-- 1,552 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import argparse
import os
import re


def main():
    parser = argparse.ArgumentParser(
        description="Compute semver for Robot Raconteur build")
    parser.add_argument("--github-env", action="store_true")

    args = parser.parse_args()

    with open("robotraconteur/RobotRaconteurCore/include/RobotRaconteur/RobotRaconteurConfig.h") as f:
        config_h = f.read()

    config_h_ver_str_m = re.search(
        "ROBOTRACONTEUR_VERSION_TEXT \"(\\d+\\.\\d+\\.\\d+)\"", config_h)
    config_h_ver_str = config_h_ver_str_m.group(1)

    config_h_ver_regex = r"^((?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*))?"
    assert re.match(config_h_ver_regex, config_h_ver_str), "Invalid config header file version {config_h_ver_str}".format(
        config_h_ver_str=config_h_ver_str)

    ref = os.environ["GITHUB_REF"]
    if ref.startswith("refs/tags"):
        semver_tag_regex = r"^refs\/tags\/v(((?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*))(-(?:alpha|beta|rc)\d+)?)"
        m = re.match(semver_tag_regex, ref)
        assert m, "Invalid tag {ref}".format(ref=ref)
        assert m.group(2) == config_h_ver_str
        semver = m.group(1)
        print(semver)
    else:
        run_id = os.environ["GITHUB_RUN_ID"]
        semver = config_h_ver_str + "--dev{run_id}".format(run_id=run_id)
        print(semver)

    if args.github_env:
        github_env = os.environ["GITHUB_ENV"]
        with open(github_env, "r+") as f:
            f.write("ROBOTRACONTEUR_SEMVER={semver}\n".format(semver=semver))


if __name__ == "__main__":
    main()