#!/usr/bin/env python3
# pylint: disable=invalid-name

"""Remove duplicate versions of local Vagrant base boxes."""
# pylint: disable=import-error
from sh import vagrant

# pylint: disable=no-name-in-module
from parse import parse


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"]]}
for box in boxes:
    for provider in boxes[box]:
        for version in boxes[box][provider][:-1]:
            print("Removing box {0} version {1}.".format(box, version))
            vagrant.box(
                "remove",
                "--force",
                "--provider",
                provider,
                "--box-version",
                version,
                box,
            )
vagrant("global-status", "--prune")
