hurl/bin/check/rust_version.py

43 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import datetime
import json
import os
import requests
import sys
def get_latest_release():
r = requests.get("https://api.github.com/repos/rust-lang/rust/releases")
releases = json.loads(r.text)
latest_release = releases[0]
version = latest_release["tag_name"]
date_str = latest_release["published_at"]
date = datetime.datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%SZ")
return version, date
def get_current_version():
return os.popen("cargo --version").read().split(" ")[1]
def main():
if len(sys.argv) < 2:
print("Usage: rust_version.py NUM_DAYS_BEFORE_ERROR")
sys.exit(1)
num_days_before_error = int(sys.argv[1])
latest_version, date = get_latest_release()
current_version = get_current_version()
if current_version < latest_version:
sys.stderr.write(
"Rust version must be updated from %s to the latest version %s\n"
% (current_version, latest_version)
)
days_before_now = datetime.datetime.now() - date
if days_before_now > datetime.timedelta(days=num_days_before_error):
sys.exit(1)
if __name__ == "__main__":
main()