#!/usr/bin/env python

# This script was necessary to really uninstall packages on Travis-CI with
# its python 3 venv.  For some reason a simple `pip uninstall` left behind
# empty package directories.

import os
import shutil
import subprocess
import sys

def find_pip():
    def is_exe(fpath):
        return os.path.isfile(fpath) and os.access(fpath, os.X_OK)

    for path in os.environ['PATH'].split(os.pathsep):
        full_path = os.path.join(path, 'pip')
        if is_exe(full_path):
            return full_path

    raise RuntimeError("Couldn't find pip in PATH")


def main(args):
    if os.environ.get('TRAVIS') != 'true':
        sys.stderr.write("This is only useful on TRAVIS!")
        return 1

    packages = args
    pipcall_args = [find_pip(), 'uninstall', '--yes']
    pipcall_args.extend(packages)

    subprocess.check_call(pipcall_args)
    if sys.version_info[0] == 2:
        return 0

    # with python3 we're getting left-overs.  Delete them
    venv_lib_path = os.path.join(
        sys.prefix,
        'lib',
        'python{}.{}'.format(sys.version_info[0], sys.version_info[1]),
        'site-packages')

    for p in packages:
        full_path = os.path.join(venv_lib_path, p)
        sys.stderr.write("Removing {}\n".format(full_path))
        shutil.rmtree(full_path, ignore_errors=True)

    sys.stderr.write("all done")
    return 0

if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))
