diff options
author | Federico Mena Quintero <federico@gnome.org> | 2023-02-08 17:05:27 -0600 |
---|---|---|
committer | Federico Mena Quintero <federico@gnome.org> | 2023-02-08 17:05:27 -0600 |
commit | 2361cec201595fd23234e43627d888e632e13176 (patch) | |
tree | 5073ee74c5366d39fdbadb8570aedb04e59c600c /ci | |
parent | 23e68891c76ff1a392e1bdff2383b0d7373d4a5c (diff) | |
download | librsvg-2361cec201595fd23234e43627d888e632e13176.tar.gz |
CI: Add a lint for the various MSRVs we mention in the source tree
ci/check_rust_versions.py is a script that checks that all the
mentioned *minimum* Rust versions (configure.ac, Cargo.toml, etc.) are
the same.
I don't think we mention the "stable" Rust version anywhere but
ci/container_builds.yml, so we don't need a check for that one.
Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/792>
Diffstat (limited to 'ci')
-rw-r--r-- | ci/check_rust_versions.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/ci/check_rust_versions.py b/ci/check_rust_versions.py new file mode 100644 index 00000000..56aac1a4 --- /dev/null +++ b/ci/check_rust_versions.py @@ -0,0 +1,47 @@ +# This script checks that the Minimum Supported Rust Version (MSRV) has the same value +# in several places throughout the source tree. + +import re +import sys + +PLACES_TO_CHECK = [ + ['configure.ac', r'MINIMUM_RUST_VER=(.*)'], + ['Cargo.toml', r'rust-version\s*=\s*"(.*)"'], + ['ci/container_builds.yml', r'RUST_MINIMUM:\s*"(.*)"'], + ['devel-docs/devel_environment.rst', r'rust (.*) or later'], +] + +versions = [] + +for filename, regex in PLACES_TO_CHECK: + r = re.compile(regex) + + with open(filename) as f: + matched = False + for idx, line in enumerate(f.readlines()): + matches = r.search(line) + if matches is not None: + matched = True + line_number = idx + 1 + versions.append([filename, line_number, matches.group(1), line]) + + if not matched: + raise Exception(f'file {filename} does not have a line that matches {regex}') + +assert len(versions) > 0 + +all_the_same = True + +for filename, line_number, version, line in versions[1:]: + if version != versions[0][2]: + all_the_same = False + +if not all_the_same: + print(f'Version numbers do not match in these lines, please fix them!\n', file=sys.stderr) + + for filename, line_number, version, line in versions: + print(f'{filename}:{line_number}: {line}', file=sys.stderr) + + sys.exit(1) + +print(f'Versions number match. All good!', file=sys.stderr) |