aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/bootstrap_commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo/bootstrap_commands.py')
-rw-r--r--python/servo/bootstrap_commands.py26
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.")