def list_download_data(pkgs: Iterable[str]) -> List[Dict[str, str]]: _, output = system.run(['pacman', '-Si', *pkgs]) if output: res = [] data = {'a': None, 'v': None, 'r': None, 'n': None} for l in output.split('\n'): if l: if l[0] != ' ': line = l.strip() field_sep_idx = line.index(':') field = line[0:field_sep_idx].strip() val = line[field_sep_idx + 1:].strip() if field == 'Repository': data['r'] = val elif field == 'Name': data['n'] = val elif field == 'Version': data['v'] = val.split('=')[0] elif field == 'Architecture': data['a'] = val elif data.get('a'): res.append(data) data = {'a': None, 'v': None, 'r': None, 'n': None} return res
def list_available_mirrors() -> List[str]: _, output = system.run(['pacman-mirrors', '--status', '--no-color']) if output: mirrors = RE_AVAILABLE_MIRRORS.findall(output) if mirrors: mirrors.sort(key=lambda o: o[0]) return [m[1] for m in mirrors]
def get_mirrors_branch() -> str: _, output = system.run(['pacman-mirrors', '-G']) return output.strip()