def _iglobpath(s, ignore_case=False, sort_result=None): s = builtins.__xonsh_expand_path__(s) if sort_result is None: sort_result = builtins.__xonsh_env__.get('GLOB_SORTED') if ignore_case: s = expand_case_matching(s) if sys.version_info > (3, 5): if '**' in s and '**/*' not in s: s = s.replace('**', '**/*') # `recursive` is only a 3.5+ kwarg. if sort_result: paths = glob.glob(s, recursive=True) paths.sort() paths = iter(paths) else: paths = glob.iglob(s, recursive=True) return paths, s else: if sort_result: paths = glob.glob(s) paths.sort() paths = iter(paths) else: paths = glob.iglob(s) return paths, s
def _add_cdpaths(self, paths, prefix): """Completes current prefix using CDPATH""" env = builtins.__xonsh_env__ csc = env.get('CASE_SENSITIVE_COMPLETIONS') for cdp in env.get('CDPATH'): test_glob = os.path.join(builtins.__xonsh_expand_path__(cdp), prefix) + '*' for s in iglobpath(test_glob, ignore_case=(not csc)): if os.path.isdir(s): paths.add(os.path.basename(s))
def _iglobpath(s, ignore_case=False): s = builtins.__xonsh_expand_path__(s) if ignore_case: s = expand_case_matching(s) if sys.version_info > (3, 5): if '**' in s and '**/*' not in s: s = s.replace('**', '**/*') # `recursive` is only a 3.5+ kwarg. return glob.iglob(s, recursive=True), s else: return glob.iglob(s), s
def _iglobpath(s, ignore_case=False): s = builtins.__xonsh_expand_path__(s) if ignore_case: s = expand_case_matching(s) if sys.version_info > (3, 5): if '**' in s and '**/*' not in s: s = s.replace('**', '**/*') # `recursive` is only a 3.5+ kwarg. return iglob(s, recursive=True), s else: return iglob(s), s
def list_of_list_of_strs_outer_product(x): """Takes an outer product of a list of strings""" lolos = map(ensure_list_of_strs, x) rtn = [] for los in itertools.product(*lolos): s = "".join(los) if "*" in s: rtn.extend(builtins.__xonsh_glob__(s)) else: rtn.append(builtins.__xonsh_expand_path__(s)) return rtn
def _try_cdpath(apath): # NOTE: this CDPATH implementation differs from the bash one. # In bash if a CDPATH is set, an unqualified local folder # is considered after all CDPATHs, example: # CDPATH=$HOME/src (with src/xonsh/ inside) # $ cd xonsh -> src/xonsh (whith xonsh/xonsh) # a second $ cd xonsh has no effects, to move in the nested xonsh # in bash a full $ cd ./xonsh is needed. # In xonsh a relative folder is allways preferred. env = builtins.__xonsh_env__ cdpaths = env.get("CDPATH") for cdp in cdpaths: for cdpath_prefixed_path in iglob(builtins.__xonsh_expand_path__(os.path.join(cdp, apath))): return cdpath_prefixed_path return apath
def _try_cdpath(apath): # NOTE: this CDPATH implementation differs from the bash one. # In bash if a CDPATH is set, an unqualified local folder # is considered after all CDPATHs, example: # CDPATH=$HOME/src (with src/xonsh/ inside) # $ cd xonsh -> src/xonsh (whith xonsh/xonsh) # a second $ cd xonsh has no effects, to move in the nested xonsh # in bash a full $ cd ./xonsh is needed. # In xonsh a relative folder is allways preferred. env = builtins.__xonsh_env__ cdpaths = env.get('CDPATH') for cdp in cdpaths: for cdpath_prefixed_path in iglob(builtins.__xonsh_expand_path__(os.path.join(cdp, apath))): return cdpath_prefixed_path return apath