def which(program): if isinstance(program, String): if program.string.count(u"/") > 0: program = pathobj.to_path(program) if isinstance(program, pathobj.Path): path = pathobj.os_stringify(program).encode('utf-8') if is_exe(path): return pathobj.concat(pathobj.getcwd(), program) return null elif not isinstance(program, String): raise OldError(u"string or path expected to .which()") program = as_cstring(program) for path in os.environ.get("PATH").split(os.pathsep): path = path.strip('"') exe_file = os.path.join(path, program) if is_exe(exe_file): return from_cstring(exe_file) return null
def entry_point(raw_argv): lever_path = os.environ.get('LEVER_PATH') if lever_path is None: lever_path = pathobj.parse(default_lever_path) else: lever_path = pathobj.os_parse(lever_path.decode('utf-8')) lever_path = pathobj.concat(pathobj.getcwd(), lever_path) # This should happen only once. uv_loop = uv.default_loop() uv_idler = uv.malloc_bytes(uv.idle_ptr, uv.handle_size(uv.IDLE)) uv.idle_init(uv_loop, uv_idler) uv_stdin = initialize_stdio(uv_loop, 0, 1) uv_stdout = initialize_stdio(uv_loop, 1, 0) uv_stderr = initialize_stdio(uv_loop, 2, 0) base.module.setattr_force(u"stdin", uv_stdin) base.module.setattr_force(u"stdout", uv_stdout) base.module.setattr_force(u"stderr", uv_stderr) base.module.setattr_force(u"runtime_path", lever_path) ec = core.init_executioncontext(config, lever_path, uv_loop, uv_idler) core.g.log = log = uv_logging.Logger(ec, uv_stdout, uv_stderr) api.init(lever_path) vectormath.init_random() argv = [normal_startup] for arg in raw_argv[1:]: argv.append(space.String(arg.decode('utf-8'))) core.schedule(argv) uv.run(ec.uv_loop, uv.RUN_DEFAULT) #uv.loop_close(ec.uv_loop) uv.tty_reset_mode() log.last_chance_logging() return ec.exit_status
def getcwd(): return pathobj.getcwd()