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 runpackage(arguments): # Generic method to run any installed app in the virtualenv whose name starts with hitch* update_requirements() binfile = path.join(hitchdir.get_hitch_directory(), "virtualenv", "bin", "hitch{}".format(argv[1])) command = [binfile, ] + argv[2:] return_code = call(command) exit(return_code)
def runpackage(arguments): # Generic method to run any installed app in the virtualenv whose name starts with hitch* update_requirements() binfile = path.join(hitchdir.get_hitch_directory(), "virtualenv", "bin", "hitch{}".format(argv[1])) command = [binfile, ] + argv[2:] # When receiving a signal, distribute it to the process group def forward_signal_to_child(pid, signum, frame): kill(pid, signum) process = Popen(command) signal.signal(signal.SIGINT, partial(forward_signal_to_child, process.pid)) signal.signal(signal.SIGTERM, partial(forward_signal_to_child, process.pid)) signal.signal(signal.SIGHUP, partial(forward_signal_to_child, process.pid)) signal.signal(signal.SIGQUIT, partial(forward_signal_to_child, process.pid)) return_code = process.wait() exit(return_code)
def runpackage(arguments): # Generic method to run any installed app in the virtualenv whose name starts with hitch* update_requirements() binfile = path.join(hitchdir.get_hitch_directory(), "virtualenv", "bin", "hitch{}".format(argv[1])) command = [ binfile, ] + argv[2:] # When receiving a signal, distribute it to the process group def forward_signal_to_child(pid, signum, frame): kill(pid, signum) process = Popen(command) signal.signal(signal.SIGINT, partial(forward_signal_to_child, process.pid)) signal.signal(signal.SIGTERM, partial(forward_signal_to_child, process.pid)) signal.signal(signal.SIGHUP, partial(forward_signal_to_child, process.pid)) signal.signal(signal.SIGQUIT, partial(forward_signal_to_child, process.pid)) return_code = process.wait() exit(return_code)