1
0
Derivar 1
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

86 linhas
2.3 KiB

Este ficheiro contém caracteres Unicode ambíguos!

Este ficheiro contém caracteres Unicode ambíguos que podem ser confundidos com outros da sua configuração regional vigente. Se o uso é intencional e legítimo, pode ignorar este aviso com segurança. Use o botão Revelar para realçar esses caracteres.

#/usr/bin/env python
# -*- coding: UTF-8 -*-
import os, sys
import json
# создаём разширеную базу пактов с предлизительно структурой
#pkg_list ={"category": [{name: name_pkg, versions:[list_version]}]}
# и клладём это всё в json
#
#
def create_db():
pkg_list ={}
port_dir =["/var/lib/layman/", "/usr/portage"]
if not os.path.exists('./pkgs.json'):
print("Create ramdb")
pkg_name =""
all_pkgs = []
with open('./pkgs.json', 'a') as fn:
for p in port_dir:
for d, dirs, files in os.walk(p):
for f in files:
if f.endswith('.ebuild'):
#print(d +"/" + f)
pkg_name =""
try:
#ver=int(f.replace('.ebuild', '').split('-')[-1][0])
for pn in f.replace('.ebuild', '').split('-')[:-1]:
pkg_name = pkg_name + pn + "-"
except TypeError:
for pn in f.replace('.ebuild', '').split('-')[:-2]:
pkg_name = pkg_name + pn + "-"
except Exception as e:
print(e)
if not pkg_name[:-1] in all_pkgs:
print(str(d.split("/")[-2] +"/" + d.split("/")[-1] +"\n"))
all_pkgs.append(str(d.split("/")[-2] +"/" + d.split("/")[-1]))
if d.split("/")[-2] not in pkg_list.keys():
pkg_list[str(d.split("/")[-2])] = []
pkg_list[d.split("/")[-2]].append(d.split('/')[-1])
print([d.split("/")[-2]])
else:
if d.split('/')[-1] not in pkg_list[d.split('/')[-2]]:
pkg_list[d.split("/")[-2]].append(d.split('/')[-1])
print([d.split('/')[-1]])
fn.write(json.dumps({"all_pkgs": all_pkgs,"Catalog": pkg_list}))
#print(len(pkg_list))
print("Found:\t"+ str(len(pkg_list.keys())) + " category\n" + str(len(all_pkgs)) +"packages\n")
def on_find(p_v):
if not os.path.exists('./pkgs.json'):
create_db()
p = []
ret_p =""
ret = {}
with open('./pkgs.json', 'r') as fn:
#data = fn.read()
pkg_list= fn.read()
"""
pkg_list = data.split("\n")
for i in pkg_list:
if p_v in i and not i in p:
print(i)
p.append(str(i))
#ret_p = ret_p +"\t" + i
print("Find in template:\t" + str(len(p)))
"""
#ret = {"Name": ret_p.split("\t")}
#print(ret_p)
print(p)
return pkg_list #json.dumps(ret)
if __name__ == '__main__':
if not os.path.exists('./pkgs.txt'):
create_db()
if len(sys.argv) >=2:
on_find(sys.argv[1])
else:
print("No element to find")