From e3563fcaa6c03f619d3f0cd3c23b2a6a46ef55b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Tue, 21 Dec 2021 16:15:12 +0100 Subject: [PATCH] depcheck: Add update for Cargo.lock --- depcheck/update-cargo-dependencies.py | 38 +++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/depcheck/update-cargo-dependencies.py b/depcheck/update-cargo-dependencies.py index 1e9b196..6e8adae 100755 --- a/depcheck/update-cargo-dependencies.py +++ b/depcheck/update-cargo-dependencies.py @@ -85,5 +85,43 @@ for tier in ["dependencies", "dev-dependencies"]: ) +# This updates the crates.io index, see https://github.com/rust-lang/cargo/issues/3377 +subprocess.run( + ["cargo", "search", "--limit", "0"], + check=True, + capture_output=False, # to get some git output +) + +# Note that we have to restart this lookup every time, as later packages can depend +# on former packages +while True: + with open("../Cargo.lock", "r") as f: + cargo_lock = tomlkit.parse(f.read()) + for package in cargo_lock['package']: + spec = f"{package['name']}:{package['version']}" + try: + cmd = subprocess.run( + ["cargo", "update", "-Z", "no-index-update", "--aggressive", "--package", spec], + check=True, + capture_output=True, + text=True, + ) + except subprocess.CalledProcessError as e: + print(e.stdout) + print(e.stderr) + raise + if len(cmd.stderr) != 0: + update_necessary = True + message = "Cargo.lock: {}".format(cmd.stderr.split("\n")[0].strip()) + print(message) + cmd = subprocess.run( + ["git", "commit", "--message", message, "../Cargo.lock"], + check=True, + capture_output=True + ) + break + else: + break + if update_necessary is False: print("Everything up to date")