import subprocess import os import sys import glob import xml.etree.ElementTree as etree # create and enter venv def create_venv( name): if subprocess.call("virtualenv {}".format(name), shell = True): raise Exception("virtualenv create failed") ret = subprocess.call(". {}/bin/activate && python {} run". \ format(name,__file__), shell = True) sys.exit(ret) def init_venv(): subprocess.call("pip install -U pip", shell = True) subprocess.call("pip install -U setuptools", shell = True) subprocess.call("pip install wheel", shell = True) subprocess.call("pip install twine", shell = True) if len(sys.argv) == 1: create_venv ("mavenvenv") else: init_venv() if os.environ['MVN_PHASE'] == 'package': wheelname = os.environ['WHEEL_NAME'] inputdir = os.environ['INPUT_DIR'] outputdir = os.environ['OUTPUT_DIR'] savedir = os.getcwd() os.chdir(inputdir) if subprocess.call( [ "python", "setup.py", "bdist_wheel", "-d", outputdir ]): sys.stderr("wheel create failed") sys.exit(1) f = glob.glob(outputdir+"/*.whl")[0] os.rename(f , outputdir+"/"+ wheelname) elif os.environ['MVN_PHASE'] == 'deploy': it = etree.iterparse(os.environ['SETTINGS_FILE']) for _, el in it: el.tag = el.tag.split('}', 1)[1] # strip namespace settings = it.root username = settings.find('.//server[id="{}"]/username'.format( os.environ['PYPI_SERVERID'])).text password = settings.find('.//server[id="{}"]/password'.format( os.environ['PYPI_SERVERID'])).text try: if subprocess.call( [ "twine", "upload", "--username", username, "--password", password, "--repository-url", os.environ["PYPI_SERVER_BASEURL"], os.environ["WHEEL_PATH"] ] ): sys.stderr.write("pypi upload failed") sys.exit(1) finally: subprocess.call("rm -rf mavenvenv", shell = True) sys.exit(0) else: sys.stderr.write("Unrecognized phase '{}'\n".format( os.environ('MVN_PHASE'))) sys.exit(1)