#!/usr/bin/env python3
import os
import subprocess


INVIRTUALENV_DIR = '/var/lib/invirtualenv'
INSTALLVENV = '/var/lib/invirtualenv/installvenv'


def init_directories():
    os.makedirs('/var/lib/virtualenvs')
    os.makedirs(INVIRTUALENV_DIR)


def init_debian():
    if not os.path.exists('/usr/bin/apt-get'):
        return

    print('Configuring container for debian packaging')
    os.environ['DEBIAN_FRONTEND'] = 'noninteractive'
    subprocess.check_call(['apt-get', 'update'])
    subprocess.check_call(['apt-get', 'upgrade', '-y'])
    subprocess.check_call(['apt-get', 'install', '-y', 'python-dev', 'python-pip', 'python-virtualenv'])


def init_rpm():
    if not os.path.exists('/usr/bin/yum'):
        return

    print('Configuring container for rpm packaging')
    subprocess.check_call(['yum', 'upgrade', '-y'])
    subprocess.check_call(['yum', 'install', '-y', 'python-devel', 'python-virtualenv'])


def install_invirtualenv():
    venv_bin = os.path.join(INSTALLVENV, 'bin')
    venv_pip = os.path.join(venv_bin, 'pip')
    subprocess.check_call(['virtualenv', INSTALLVENV])
    subprocess.check_call([venv_pip, 'install', '-U', 'setuptools'])
    subprocess.check_call([venv_pip, 'install', '-U', 'pip', 'wheel', 'virtualenv'])
    subprocess.check_call([venv_pip, 'install', '-U', 'invirtualenv'])


def deploy():
    cwd = os.getcwd()
    os.chdir(INVIRTUALENV_DIR)

    subprocess.check_call([os.path.join(INSTALLVENV, 'deploy_virtualenv')])

    os.chdir(cwd)


def run():
    init_directories()

    init_debian()
    init_rpm()

    install_invirtualenv()


if __name__ == '__main__':
    run()
