diff options
Diffstat (limited to 'python/servo/bootstrap_commands.py')
-rw-r--r-- | python/servo/bootstrap_commands.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/python/servo/bootstrap_commands.py b/python/servo/bootstrap_commands.py index 11509e5ede5..e0cff7097de 100644 --- a/python/servo/bootstrap_commands.py +++ b/python/servo/bootstrap_commands.py @@ -152,3 +152,29 @@ class MachCommands(CommandBase): ["git", "submodule", "--quiet", "sync", "--recursive"]) subprocess.check_call( ["git", "submodule", "update", "--init", "--recursive"]) + + @Command('clean-snapshots', + description='Clean unused snapshots of Rust and Cargo', + category='bootstrap') + @CommandArgument('--force', '-f', + action='store_true', + help='Actually remove stuff') + def clean_snapshots(self, force=False): + rust_current = self.rust_snapshot_path().split('/')[0] + cargo_current = self.cargo_build_id() + print("Current Rust version: " + rust_current) + print("Current Cargo version: " + cargo_current) + action = "Removing " if force else "Would remove " + for current, base in [(rust_current, "rust"), (cargo_current, "cargo")]: + base = path.join(self.context.sharedir, base) + for name in os.listdir(base): + if name != current: + name = path.join(base, name) + if force: + print("Removing " + name) + shutil.rmtree(name) + else: + print("Would remove " + name) + if not force: + print("Nothing done. " + "Run `./mach clean-snapshots -f` to actually remove.") |