def main(argv=None): """Main entry point for xonsh cli.""" args = premain(argv) env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ if args.command is not None: # run a single command and exit shell.default(args.command) elif args.file is not None: # run a script contained in a file if os.path.isfile(args.file): with open(args.file) as f: code = f.read() code = code if code.endswith('\n') else code + '\n' env['ARGS'] = [args.file] + args.args code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif not sys.stdin.isatty(): # run a script given on stdin code = sys.stdin.read() code = code if code.endswith('\n') else code + '\n' code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: # otherwise, enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() shell.cmdloop() postmain(args)
def main(argv=None): """Main entry point for xonsh cli.""" args = premain(argv) env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ if args.command is not None: # run a single command and exit shell.default(args.command) elif args.file is not None: # run a script contained in a file if os.path.isfile(args.file): with open(args.file) as f: code = f.read() code = code if code.endswith('\n') else code + '\n' env['ARGS'] = [args.file] + args.args code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif not sys.stdin.isatty(): # run a script given on stdin code = sys.stdin.read() code = code if code.endswith('\n') else code + '\n' code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: shell.shell.github = GitHub() # otherwise, enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() shell.cmdloop() postmain(args)
def main(argv=None): """Main entry point for xonsh cli.""" args = parser.parse_args() shell = Shell() if not args.norc else Shell(ctx={}) from xonsh import imphooks env = builtins.__xonsh_env__ if args.defines is not None: env.update([x.split('=', 1) for x in args.defines]) env['XONSH_INTERACTIVE'] = False if args.command is not None: # run a single command and exit shell.default(args.command) elif args.file is not None: # run a script contained in a file if os.path.isfile(args.file): with open(args.file) as f: code = f.read() code = code if code.endswith('\n') else code + '\n' env['ARGS'] = [args.file] + args.args code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif not sys.stdin.isatty(): # run a script given on stdin code = sys.stdin.read() code = code if code.endswith('\n') else code + '\n' code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: # otherwise, enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() shell.cmdloop()
def main(argv=None): """Main entry point for xonsh cli.""" args = premain(argv) env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ if args.mode == XonshMode.single_command: # run a single command and exit run_code_with_cache(args.command, shell.execer, mode='single') elif args.mode == XonshMode.script_from_file: # run a script contained in a file if os.path.isfile(args.file): sys.argv = args.args env['ARGS'] = [args.file] + args.args run_script_with_cache(args.file, shell.execer, glb=shell.ctx, loc=None, mode='exec') else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() run_code_with_cache(code, shell.execer, glb=shell.ctx, loc=None, mode='exec') else: # otherwise, enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() if not env['LOADED_CONFIG'] and not any(env['LOADED_RC_FILES']): print('Could not find xonsh configuration or run control files.') from xonsh import xonfig # lazy import xonfig.main(['wizard', '--confirm']) shell.cmdloop() postmain(args)
def main_xonsh(args): """Main entry point for xonsh cli.""" if not ON_WINDOWS: def func_sig_ttin_ttou(n, f): pass signal.signal(signal.SIGTTIN, func_sig_ttin_ttou) signal.signal(signal.SIGTTOU, func_sig_ttin_ttou) events.on_post_init.fire() env = builtins.__xonsh__.env shell = builtins.__xonsh__.shell history = builtins.__xonsh__.history exit_code = 0 try: if args.mode == XonshMode.interactive: # enter the shell env["XONSH_INTERACTIVE"] = True ignore_sigtstp() if env["XONSH_INTERACTIVE"] and not any( os.path.isfile(i) for i in env["XONSHRC"] ): print_welcome_screen() events.on_pre_cmdloop.fire() try: shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() elif args.mode == XonshMode.single_command: # run a single command and exit run_code_with_cache(args.command.lstrip(), shell.execer, mode="single") if history is not None and history.last_cmd_rtn is not None: exit_code = history.last_cmd_rtn elif args.mode == XonshMode.script_from_file: # run a script contained in a file path = os.path.abspath(os.path.expanduser(args.file)) if os.path.isfile(path): sys.argv = [args.file] + args.args env.update(make_args_env()) # $ARGS is not sys.argv env["XONSH_SOURCE"] = path shell.ctx.update({"__file__": args.file, "__name__": "__main__"}) run_script_with_cache( args.file, shell.execer, glb=shell.ctx, loc=None, mode="exec" ) else: print("xonsh: {0}: No such file or directory.".format(args.file)) exit_code = 1 elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() run_code_with_cache( code, shell.execer, glb=shell.ctx, loc=None, mode="exec" ) finally: events.on_exit.fire() postmain(args) return exit_code
def main(argv=None): """Main entry point for xonsh cli.""" if argv is None: argv = sys.argv[1:] args = premain(argv) events.on_post_init.fire() env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ try: if args.mode == XonshMode.interactive: # enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() if (env['XONSH_INTERACTIVE'] and not env['LOADED_CONFIG'] and not any(os.path.isfile(i) for i in env['XONSHRC'])): print( 'Could not find xonsh configuration or run control files.', file=sys.stderr) xonfig_main(['wizard', '--confirm']) events.on_pre_cmdloop.fire() try: shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() elif args.mode == XonshMode.single_command: # run a single command and exit run_code_with_cache(args.command.lstrip(), shell.execer, mode='single') elif args.mode == XonshMode.script_from_file: # run a script contained in a file path = os.path.abspath(os.path.expanduser(args.file)) if os.path.isfile(path): sys.argv = [args.file] + args.args env['ARGS'] = sys.argv[:] # $ARGS is not sys.argv env['XONSH_SOURCE'] = path run_script_with_cache(args.file, shell.execer, glb=shell.ctx, loc=None, mode='exec') else: print('xonsh: {0}: No such file or directory.'.format( args.file)) elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() run_code_with_cache(code, shell.execer, glb=shell.ctx, loc=None, mode='exec') finally: events.on_exit.fire() postmain(args)
def main_xonsh(args): """Main entry point for xonsh cli.""" if not ON_WINDOWS: def func_sig_ttin_ttou(n, f): pass signal.signal(signal.SIGTTIN, func_sig_ttin_ttou) signal.signal(signal.SIGTTOU, func_sig_ttin_ttou) events.on_post_init.fire() env = builtins.__xonsh__.env shell = builtins.__xonsh__.shell try: if args.mode == XonshMode.interactive: # enter the shell env["XONSH_INTERACTIVE"] = True ignore_sigtstp() if env["XONSH_INTERACTIVE"] and not any( os.path.isfile(i) for i in env["XONSHRC"] ): print_welcome_screen() events.on_pre_cmdloop.fire() try: shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() elif args.mode == XonshMode.single_command: # run a single command and exit run_code_with_cache(args.command.lstrip(), shell.execer, mode="single") elif args.mode == XonshMode.script_from_file: # run a script contained in a file path = os.path.abspath(os.path.expanduser(args.file)) if os.path.isfile(path): sys.argv = [args.file] + args.args env.update(make_args_env()) # $ARGS is not sys.argv env["XONSH_SOURCE"] = path shell.ctx.update({"__file__": args.file, "__name__": "__main__"}) run_script_with_cache( args.file, shell.execer, glb=shell.ctx, loc=None, mode="exec" ) else: print("xonsh: {0}: No such file or directory.".format(args.file)) elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() run_code_with_cache( code, shell.execer, glb=shell.ctx, loc=None, mode="exec" ) finally: events.on_exit.fire() postmain(args)
def main_aish(args): """Main entry point for aish cli. replaces main_xonsh in main.py of xonsh""" if not ON_WINDOWS: def func_sig_ttin_ttou(n, f): pass signal.signal(signal.SIGTTIN, func_sig_ttin_ttou) signal.signal(signal.SIGTTOU, func_sig_ttin_ttou) events.on_post_init.fire() env = builtins.__xonsh__.env shell = builtins.__xonsh__.shell try: #if args.mode == XonshMode.interactive: # forced to true # enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() if (env['XONSH_INTERACTIVE'] and not any(os.path.isfile(i) for i in env['XONSHRC'])): pass #print_welcome_screen() events.on_pre_cmdloop.fire() try: #shell.shell.cmdloop() shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() #elif args.mode == XonshMode.single_command: # # run a single command and exit # run_code_with_cache(args.command.lstrip(), shell.execer, mode='single') #elif args.mode == XonshMode.script_from_file: # # run a script contained in a file # path = os.path.abspath(os.path.expanduser(args.file)) # if os.path.isfile(path): # sys.argv = [args.file] + args.args # env['ARGS'] = sys.argv[:] # $ARGS is not sys.argv # env['XONSH_SOURCE'] = path # shell.ctx.update({'__file__': args.file, '__name__': '__main__'}) # run_script_with_cache(args.file, shell.execer, glb=shell.ctx, # loc=None, mode='exec') # else: # print('xonsh: {0}: No such file or directory.'.format(args.file)) #elif args.mode == XonshMode.script_from_stdin: # # run a script given on stdin # code = sys.stdin.read() # run_code_with_cache(code, shell.execer, glb=shell.ctx, loc=None, # mode='exec') finally: events.on_exit.fire() xmain.postmain(args)
def main_xonsh(args): """Main entry point for xonsh cli.""" if not ON_WINDOWS: def func_sig_ttin_ttou(n, f): pass signal.signal(signal.SIGTTIN, func_sig_ttin_ttou) signal.signal(signal.SIGTTOU, func_sig_ttin_ttou) events.on_post_init.fire() env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ try: if args.mode == XonshMode.interactive: # enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() if (env['XONSH_INTERACTIVE'] and not env['LOADED_CONFIG'] and not any(os.path.isfile(i) for i in env['XONSHRC'])): print_welcome_screen() events.on_pre_cmdloop.fire() try: shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() elif args.mode == XonshMode.single_command: # run a single command and exit run_code_with_cache(args.command.lstrip(), shell.execer, mode='single') elif args.mode == XonshMode.script_from_file: # run a script contained in a file path = os.path.abspath(os.path.expanduser(args.file)) if os.path.isfile(path): sys.argv = [args.file] + args.args env['ARGS'] = sys.argv[:] # $ARGS is not sys.argv env['XONSH_SOURCE'] = path shell.ctx.update({'__file__': args.file, '__name__': '__main__'}) run_script_with_cache(args.file, shell.execer, glb=shell.ctx, loc=None, mode='exec') else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() run_code_with_cache(code, shell.execer, glb=shell.ctx, loc=None, mode='exec') finally: events.on_exit.fire() postmain(args)
def main_xonsh(args): """Main entry point for xonsh cli.""" if not ON_WINDOWS: def func_sig_ttin_ttou(n, f): pass signal.signal(signal.SIGTTIN, func_sig_ttin_ttou) signal.signal(signal.SIGTTOU, func_sig_ttin_ttou) events.on_post_init.fire() env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ try: if args.mode == XonshMode.interactive: # enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() if (env['XONSH_INTERACTIVE'] and not any(os.path.isfile(i) for i in env['XONSHRC'])): print_welcome_screen() events.on_pre_cmdloop.fire() try: shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() elif args.mode == XonshMode.single_command: # run a single command and exit run_code_with_cache(args.command.lstrip(), shell.execer, mode='single') elif args.mode == XonshMode.script_from_file: # run a script contained in a file path = os.path.abspath(os.path.expanduser(args.file)) if os.path.isfile(path): sys.argv = [args.file] + args.args env.update(make_args_env()) # $ARGS is not sys.argv env['XONSH_SOURCE'] = path shell.ctx.update({'__file__': args.file, '__name__': '__main__'}) run_script_with_cache(args.file, shell.execer, glb=shell.ctx, loc=None, mode='exec') else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() run_code_with_cache(code, shell.execer, glb=shell.ctx, loc=None, mode='exec') finally: events.on_exit.fire() postmain(args)
def main(argv=None): """Main entry point for xonsh cli.""" if argv is None: argv = sys.argv[1:] args = premain(argv) events.on_post_init.fire() env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ try: if args.mode == XonshMode.interactive: # enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() if (env['XONSH_INTERACTIVE'] and not env['LOADED_CONFIG'] and not any(os.path.isfile(i) for i in env['XONSHRC'])): print('Could not find xonsh configuration or run control files.', file=sys.stderr) xonfig_main(['wizard', '--confirm']) events.on_pre_cmdloop.fire() try: shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() elif args.mode == XonshMode.single_command: # run a single command and exit run_code_with_cache(args.command.lstrip(), shell.execer, mode='single') elif args.mode == XonshMode.script_from_file: # run a script contained in a file path = os.path.abspath(os.path.expanduser(args.file)) if os.path.isfile(path): sys.argv = [args.file] + args.args env['ARGS'] = sys.argv[:] # $ARGS is not sys.argv env['XONSH_SOURCE'] = path run_script_with_cache(args.file, shell.execer, glb=shell.ctx, loc=None, mode='exec') else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() run_code_with_cache(code, shell.execer, glb=shell.ctx, loc=None, mode='exec') finally: events.on_exit.fire() postmain(args)
def main(argv=None): """Main entry point for xonsh cli.""" args = parser.parse_args() shell_kwargs = {'shell_type': args.shell_type} if args.norc: shell_kwargs['ctx'] = {} setattr(sys, 'displayhook', _pprint_displayhook) shell = builtins.__xonsh_shell__ = Shell(**shell_kwargs) from xonsh import imphooks env = builtins.__xonsh_env__ if args.defines is not None: env.update([x.split('=', 1) for x in args.defines]) env['XONSH_INTERACTIVE'] = False click.echo('Version: ' + gitsome_version) if args.command is not None: # run a single command and exit shell.default(args.command) elif args.file is not None: # run a script contained in a file if os.path.isfile(args.file): with open(args.file) as f: code = f.read() code = code if code.endswith('\n') else code + '\n' env['ARGS'] = [args.file] + args.args code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif not sys.stdin.isatty(): # run a script given on stdin code = sys.stdin.read() code = code if code.endswith('\n') else code + '\n' code = shell.execer.compile(code, mode='exec', glbs=shell.ctx) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: # otherwise, enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() shell.cmdloop() del builtins.__xonsh_shell__
def main(argv=None): """Main entry point for xonsh cli.""" args = parser.parse_args() shell_kwargs = {"shell_type": args.shell_type} if args.norc: shell_kwargs["ctx"] = {} setattr(sys, "displayhook", _pprint_displayhook) shell = Shell(**shell_kwargs) from xonsh import imphooks env = builtins.__xonsh_env__ if args.defines is not None: env.update([x.split("=", 1) for x in args.defines]) env["XONSH_INTERACTIVE"] = False if args.command is not None: # run a single command and exit shell.default(args.command) elif args.file is not None: # run a script contained in a file if os.path.isfile(args.file): with open(args.file) as f: code = f.read() code = code if code.endswith("\n") else code + "\n" env["ARGS"] = [args.file] + args.args code = shell.execer.compile(code, mode="exec", glbs=shell.ctx) shell.execer.exec(code, mode="exec", glbs=shell.ctx) else: print("xonsh: {0}: No such file or directory.".format(args.file)) elif not sys.stdin.isatty(): # run a script given on stdin code = sys.stdin.read() code = code if code.endswith("\n") else code + "\n" code = shell.execer.compile(code, mode="exec", glbs=shell.ctx) shell.execer.exec(code, mode="exec", glbs=shell.ctx) else: # otherwise, enter the shell env["XONSH_INTERACTIVE"] = True ignore_sigtstp() shell.cmdloop()
def main(argv=None): """Main entry point for xonsh cli.""" args = premain(argv) env = builtins.__xonsh_env__ shell = builtins.__xonsh_shell__ if args.command is not None: # run a single command and exit shell.default(args.command) elif args.file is not None: # run a script contained in a file if os.path.isfile(args.file): with open(args.file) as f: code = f.read() code = code if code.endswith('\n') else code + '\n' sys.argv = args.args env['ARGS'] = [args.file] + args.args code = shell.execer.compile(code, mode='exec', glbs=shell.ctx, filename=args.file) shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: print('xonsh: {0}: No such file or directory.'.format(args.file)) elif not sys.stdin.isatty() and not args.force_interactive: # run a script given on stdin code = sys.stdin.read() code = code if code.endswith('\n') else code + '\n' code = shell.execer.compile(code, mode='exec', glbs=shell.ctx, filename='<stdin>') shell.execer.exec(code, mode='exec', glbs=shell.ctx) else: # otherwise, enter the shell env['XONSH_INTERACTIVE'] = True ignore_sigtstp() if not env['LOADED_CONFIG'] and not any(env['LOADED_RC_FILES']): print('Could not find xonsh configuration or run control files.') code = '$[xonfig wizard --confirm]' shell.execer.exec(code, mode='single', glbs=shell.ctx) shell.cmdloop() postmain(args)
def main_xonsh(args): """Main entry point for xonsh cli.""" if not ON_WINDOWS: def func_sig_ttin_ttou(n, f): pass signal.signal(signal.SIGTTIN, func_sig_ttin_ttou) signal.signal(signal.SIGTTOU, func_sig_ttin_ttou) events.on_post_init.fire() env = XSH.env shell = XSH.shell history = XSH.history exit_code = 0 if shell and not env["XONSH_INTERACTIVE"]: shell.ctx.update({"exit": sys.exit}) # store a sys.exc_info() tuple to record any exception that might occur in the user code that we are about to execute # if this does not change, no exceptions were thrown. Otherwise, print a traceback that does not expose xonsh internals exc_info = None, None, None try: if args.mode == XonshMode.interactive: # enter the shell # Setted again here because it is possible to call main_xonsh() without calling premain(), namely in the tests. env["XONSH_INTERACTIVE"] = True ignore_sigtstp() if (env["XONSH_INTERACTIVE"] and not any(os.path.isfile(i) for i in env["XONSHRC"]) and not any(os.path.isdir(i) for i in env["XONSHRC_DIR"])): print_welcome_screen() events.on_pre_cmdloop.fire() try: shell.shell.cmdloop() finally: events.on_post_cmdloop.fire() elif args.mode == XonshMode.single_command: # run a single command and exit exc_info = run_code_with_cache( args.command.lstrip(), "<string>", shell.execer, glb=shell.ctx, mode="single", ) if history is not None and history.last_cmd_rtn is not None: exit_code = history.last_cmd_rtn elif args.mode == XonshMode.script_from_file: # run a script contained in a file path = os.path.abspath(os.path.expanduser(args.file)) if os.path.isfile(path): sys.argv = [args.file] + args.args env.update(make_args_env()) # $ARGS is not sys.argv env["XONSH_SOURCE"] = path shell.ctx.update({ "__file__": args.file, "__name__": "__main__" }) exc_info = run_script_with_cache(args.file, shell.execer, glb=shell.ctx, loc=None, mode="exec") else: print(f"xonsh: {args.file}: No such file or directory.") exit_code = 1 elif args.mode == XonshMode.script_from_stdin: # run a script given on stdin code = sys.stdin.read() exc_info = run_code_with_cache(code, "<stdin>", shell.execer, glb=shell.ctx, loc=None, mode="exec") except SyntaxError: exit_code = 1 debug_level = env.get("XONSH_DEBUG", 0) if debug_level == 0: # print error without tracktrace display_error_message(sys.exc_info()) else: # pass error to finally clause exc_info = sys.exc_info() finally: if exc_info != (None, None, None): err_type, err, _ = exc_info if err_type is SystemExit: raise err else: traceback.print_exception(*exc_info) exit_code = 1 events.on_exit.fire() postmain(args) return exit_code