Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

86 řádky
2.3 KiB

Tento soubor obsahuje nejednoznačné znaky Unicode!

Tento soubor obsahuje nejednoznačné znaky Unicode, které mohou být zaměněny s ostatními v aktuálním prostředí. Pokud je váš případ úmyslný a legitimní, můžete toto varování bezpečně ignorovat. Použijte tlačítko Escape sekvence pro zvýraznění těchto znaků.

#/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")