def grep_package(self, name, pattern=None): try: package_list = [] found_items = [ line.rstrip() for line in repoquery( "--repofrompath={0},{1}".format(self.cache_uuid, self.cache_dir), '--search', name) ] for item in found_items: item_info = [ line.rstrip() for line in repoquery( "--repofrompath={0},{1}".format(self.cache_uuid, self.cache_dir), '--info', item) ] pkg_info = {} for record in item_info: try: key, value = record.rstrip().split(':', 1) key = key.strip() value = value.strip() if key == 'Description': break pkg_info[key] = value except: continue package_list.append([pkg_info['Name'], pkg_info['Version']]) return package_list except: return []
def list_group(self, name='', repofrompath=[]): queryargs = ['--repofrompath={},{}'.format(self.repo_id, self.cache_dir)] for item in repofrompath: queryargs.append('--repofrompath=%s' % item) queryargs.extend(['--group', '--list', name]) return [line.strip() for line in repoquery(*queryargs)]
def get_packages(self, name='-a', repofrompath=[]): queryfmt = 'name : %{name}\n' \ 'epoch : %{epoch}\n' \ 'version : %{version}\n' \ 'release : %{release}\n' \ 'vendor : %{vendor}\n' \ 'packager : %{packager}\n' \ 'repoid : %{repoid}\n' \ 'packager : %{packager}\n' \ 'summary : %{summary}\n' \ 'source : %{sourcerpm}\n' \ 'END_OF_RECORD' queryargs = [] item = '{},{}'.format(self.repo_id, self.cache_dir) if item not in repofrompath: queryargs.append('--repofrompath=%s' % item) for item in repofrompath: queryargs.append('--repofrompath=%s' % item) queryargs.extend(['--qf', queryfmt, name]) pkg_info = {} for line in repoquery(*queryargs): line = line.strip() if line == 'END_OF_RECORD': yield pkg_info pkg_info = {} kv = line.split(' : ', 1) if len(kv) == 2: pkg_info[kv[0]] = kv[1]
def list_dependencies(name, repoid): reqs = set() for item in repoquery('--repoid=%s' % repoid, '--qf', '%{name}', '--resolve', '--requires', name): item = item.strip() if item != name: reqs.add(item) return list(reqs)
def get_dependencies(self, name, repofrompath=[]): queryargs = ['--repofrompath={},{}'.format(self.repo_id, self.cache_dir)] for item in repofrompath: queryargs.append('--repofrompath=%s' % item) queryargs.extend(['--qf', '%{name}', '--resolve', '--requires', name]) reqs = set() for item in repoquery(*queryargs): item = item.strip() if item != name: reqs.add(item) return list(reqs)
def list_packages(repoid): queryfmt = '{"name":"%{name}","version":"%{version}",' \ '"release":"%{release}","vendor":"%{vendor}",' \ '"repoid":"%{repoid}","packager":"%{packager}"}' for line in repoquery('-a', '--repoid=%s' % repoid, '--qf', queryfmt): yield json.loads(line)