def AppBundleMain(argv): login_shell = False b = os_path.basename(argv[0]) main_name, ext = os_path.splitext(b) if main_name.startswith('-'): login_shell = True main_name = main_name[1:] if main_name == 'oil' and ext: # oil.py or oil.ovm try: first_arg = argv[1] except IndexError: raise args.UsageError('Missing required applet name.') if first_arg in ('-h', '--help'): builtin.Help(['bundle-usage'], pyutil.GetResourceLoader()) sys.exit(0) if first_arg in ('-V', '--version'): _ShowVersion() sys.exit(0) main_name = first_arg if main_name.startswith('-'): # TODO: Remove duplication above login_shell = True main_name = main_name[1:] argv0 = argv[1] main_argv = argv[2:] else: argv0 = argv[0] main_argv = argv[1:] if main_name in ('osh', 'sh'): status = ShellMain('osh', argv0, main_argv, login_shell) _tlog('done osh main') return status elif main_name == 'oshc': try: return OshCommandMain(main_argv) except args.UsageError as e: ui.Stderr('oshc usage error: %s', e.msg) return 2 elif main_name == 'oil': return ShellMain('oil', argv0, main_argv, login_shell) elif main_name == 'wok': return WokMain(main_argv) elif main_name == 'boil': return BoilMain(main_argv) # For testing latency elif main_name == 'true': return 0 elif main_name == 'false': return 1 elif main_name == 'readlink': return readlink.main(main_argv) else: raise args.UsageError('Invalid applet name %r.' % main_name)
def AppBundleMain(argv): # type: (List[str]) -> int # NOTE: This has a side effect of deleting _OVM_* from the environment! loader = pyutil.GetResourceLoader() b = os_path.basename(argv[0]) main_name, ext = os_path.splitext(b) arg_r = args.Reader(argv) if main_name == 'oil' and ext: # oil.py or oil.ovm arg_r.Next() first_arg = arg_r.Peek() if first_arg is None: raise error.Usage('Missing required applet name.') if first_arg in ('-h', '--help'): errfmt = None # not needed here help_builtin = builtin_misc.Help(loader, errfmt) help_builtin.Run(pure.MakeBuiltinArgv(['bundle-usage'])) sys.exit(0) if first_arg in ('-V', '--version'): pyutil.ShowAppVersion('Oil', loader) sys.exit(0) main_name = first_arg login_shell = False if main_name.startswith('-'): login_shell = True main_name = main_name[1:] if main_name in ('osh', 'sh'): # TODO: # - Initialize a different shell if line_input isn't present status = shell.Main('osh', arg_r, posix.environ, login_shell, loader, line_input) _tlog('done osh main') return status elif main_name == 'osh-pure': # TODO: pure.Main() pass elif main_name == 'oshc': arg_r.Next() main_argv = arg_r.Rest() try: return OshCommandMain(main_argv) except error.Usage as e: stderr_line('oshc usage error: %s', e.msg) return 2 elif main_name == 'oil': return shell.Main('oil', arg_r, posix.environ, login_shell, loader, line_input) elif main_name == 'tea': main_argv = arg_r.Rest() return TeaMain(main_argv) # For testing latency elif main_name == 'true': return 0 elif main_name == 'false': return 1 elif main_name == 'readlink': main_argv = arg_r.Rest() return readlink.main(main_argv) else: raise error.Usage('Invalid applet name %r.' % main_name)