"""
For twine auth, want a pypirc file with contents:

[pypi]
username = usernameusernameusername
password = XXXXXXXXXX
"""

import sys
import os
import subprocess
import glob

# Check presence of twine variables or config file
userc = False
if os.path.exists('pypirc'):
    userc = True
else:
    for k in ['TWINE_USERNAME','TWINE_PASSWORD']:
        if k not in os.environ:
            raise KeyError(f'You must set the twine environment variable {k}')

def build():
    """ Build the wheel """
    for pyver in ['3.7','3.8','3.9']:
        abbrv = pyver.replace('.', '')
        condaenv = f'conda-{pyver}'
        subprocess.check_call(f'conda create -y -n {condaenv} python={pyver}', shell=True)
        subprocess.check_call(f'conda activate {condaenv} && python -m pip install -U pip wheel', shell=True)
        try:
            subprocess.check_call(f'conda activate {condaenv} && python -m pip -vvv wheel .', shell=True)
        except BaseException as be:
            print(be)
        finally:
            subprocess.check_call(f'conda env remove -y -n {condaenv}',shell=True)

def upload():
    # Upload wheels
    if userc:
        twine_call = f'twine upload --config-file pypirc *.whl'
    else:
        twine_call = f'twine upload *.whl'
    subprocess.check_call(twine_call, shell=True)

steps = ['build','upload']
if not any([k in sys.argv for k in steps]):
    raise ValueError("need to pass at least one step to do: "+str(steps))

if 'build' in sys.argv:
    build()
if 'upload' in sys.argv:
    upload()