def init(): """Initialize hitch in this directory.""" if call(["which", "virtualenv"], stdout=PIPE): stderr.write("You must have python-virtualenv installed to use hitch.\n") stderr.flush() exit(1) if hitchdir.hitch_exists(): stderr.write("Hitch has already been initialized in this directory.\n") stderr.flush() exit(1) makedirs(".hitch") pip = path.abspath(path.join(".hitch", "virtualenv", "bin", "pip")) call(["virtualenv", ".hitch/virtualenv", "--no-site-packages"]) call([pip, "install", "-U", "pip"]) if path.exists("hitchreqs.txt"): call([pip, "install", "-r", "hitchreqs.txt"]) else: call([pip, "install", "hitchtest"]) pip_freeze = check_output([pip, "freeze"]) with open("hitchreqs.txt", "w") as hitchreqs_handle: hitchreqs_handle.write(pip_freeze)
def run(): """Run hitch bootstrap CLI""" def stop_everything(sig, frame): """Exit hitch.""" exit(1) signal.signal(signal.SIGINT, stop_everything) signal.signal(signal.SIGTERM, stop_everything) signal.signal(signal.SIGHUP, stop_everything) signal.signal(signal.SIGQUIT, stop_everything) if hitchdir.hitch_exists(): # Get packages from bin folder that are hitch related python_bin = path.join(hitchdir.get_hitch_directory(), "virtualenv", "bin", "python") packages = [ package.replace("hitch", "") for package in listdir( path.join(hitchdir.get_hitch_directory(), "virtualenv", "bin")) if package.startswith("hitch") and package != "hitch" ] # Add packages that start with hitch* to the list of commands available for package in packages: cmd = copy.deepcopy(runpackage) cmd.name = package try: description = check_output([ python_bin, '-c', 'import sys;sys.stdout.write(__import__("hitch{}").commandline.cli.help)' .format(package) ], stderr=PIPE) except CalledProcessError: description = "" cmd.help = description cmd.short_help = description cli.add_command(cmd) cli.add_command(install) cli.add_command(uninstall) cli.add_command(clean) cli.add_command(freeze) cli.help = "Hitch test runner for:\n\n {}.".format( hitchdir.get_hitch_directory()) else: cli.add_command(init) cli.help = "Hitch bootstrapper - '.hitch' directory not detected here." cli()
def run(): """Run hitch bootstrap CLI""" def stop_everything(sig, frame): """Exit hitch.""" exit(1) signal.signal(signal.SIGINT, stop_everything) signal.signal(signal.SIGTERM, stop_everything) signal.signal(signal.SIGHUP, stop_everything) signal.signal(signal.SIGQUIT, stop_everything) if hitchdir.hitch_exists(): # Get packages from bin folder that are hitch related python_bin = path.join(hitchdir.get_hitch_directory(), "virtualenv", "bin", "python") packages = [ package.replace("hitch", "") for package in listdir( path.join(hitchdir.get_hitch_directory(), "virtualenv", "bin") ) if package.startswith("hitch") and package != "hitch" ] # Add packages that start with hitch* to the list of commands available for package in packages: cmd = copy.deepcopy(runpackage) cmd.name = package try: description = check_output([ python_bin, '-c', 'import sys;sys.stdout.write(__import__("hitch{}").commandline.cli.help)'.format( package ) ], stderr=PIPE) except CalledProcessError: description = "" cmd.help = description cmd.short_help = description cli.add_command(cmd) cli.add_command(install) cli.add_command(uninstall) cli.add_command(clean) cli.add_command(freeze) cli.help = "Hitch test runner for:\n\n {}.".format(hitchdir.get_hitch_directory()) else: cli.add_command(init) cli.help = "Hitch bootstrapper - '.hitch' directory not detected here." cli()
def init(): """Initialize hitch in this directory.""" if call(["which", "virtualenv"], stdout=PIPE): stderr.write( "You must have python-virtualenv installed to use hitch.\n") stderr.flush() exit(1) if call(["which", "python3"], stdout=PIPE): stderr.write( "To use Hitch, you must have python 3 installed and available on the system path with the name 'python3'.\n" ) stderr.flush() exit(1) python3 = check_output(["which", "python3"]).replace("\n", "") if hitchdir.hitch_exists(): stderr.write("Hitch has already been initialized in this directory.\n") stderr.flush() exit(1) makedirs(".hitch") pip = path.abspath(path.join(".hitch", "virtualenv", "bin", "pip")) call([ "virtualenv", ".hitch/virtualenv", "--no-site-packages", "--distribute", "-p", python3 ]) call([pip, "install", "-U", "pip"]) if path.exists("hitchreqs.txt"): call([pip, "install", "-r", "hitchreqs.txt"]) else: call([pip, "install", "hitchtest"]) pip_freeze = check_output([pip, "freeze"]) with open("hitchreqs.txt", "w") as hitchreqs_handle: hitchreqs_handle.write(pip_freeze)