#!/usr/bin/env python3 # pylint: disable=invalid-name """Remove duplicate versions of local Vagrant base boxes.""" # pylint: disable=import-error from parse import parse from sh import vagrant boxes = {} for line in vagrant.box("list"): box = parse("\x1b[0m{name:^} ({provider}, {version})\x1b[0m", line) if box["name"] in boxes: if box["provider"] in boxes[box["name"]]: boxes[box["name"]][box["provider"]].append(box["version"]) else: boxes[box["name"]][box["provider"]] = [box["version"]] else: boxes[box["name"]] = {box["provider"]: [box["version"]]} # pylint: disable=consider-using-dict-items for box in boxes: for provider in boxes[box]: for version in boxes[box][provider][:-1]: print("Removing box {box} version {version}.") vagrant.box( "remove", "--force", "--provider", provider, "--box-version", version, box, ) vagrant("global-status", "--prune")