You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
2.9 KiB

# -*- coding: UTF-8 -*-
#!/usr/bin/env python3
'__autor__'== 'serkus'
import os, sys, json
from urllib import request
#import xml
import xml.etree.ElementTree as ET
#Проверяем пользователь ROOT или нет
def is_root():
return os.geteuid() == 0
#Читаем Файл посторочно
def read_configs(filename):
param = {}
if os.path.exists(filename):
with open(filename) as f:
for line in f:
print(line)
else:
print("Path is not Found")
#получаем список оверлеев
def get_list_overlays():
3 years ago
overlays =[]
url = "https://qa-reports.gentoo.org/output/repos/repositories.xml" # "https://api.gentoo.org/overlays/repositories.xml"
response = request.urlopen(url)
overlays = []
overlay = {}
root = ET.fromstring(response.read())
#print(root.tag)
#print(root.attrib)
name = ""
description = ""
homepage = ""
for child in root.findall('repo'):
name = child.find('name').text
3 years ago
try:
description = child.find('description').text
except AttributeError:
description = "У overlay нет описания"
try:
homepage = child.find('homepage').text
except AttributeError:
homepage = "У overlay нет домашней странички"
overlay = dict(name=name, description=description, homepage=homepage)
overlays.append(overlay)
#print(str(overlays))
print(len(overlays))
3 years ago
with open('./overlays.json', 'a') as f:
f.write(json.dumps({"repositories": overlays}))
#f.close()
return overlays
def xml_element_to_dict(elem):
"Convert XML Element to a simple dict"
inner = dict(elem.attrib)
children = list(map(xml_element_to_dict, list(elem)))
text = elem.text and elem.text.strip()
if text:
inner['@text'] = text
if children:
inner['@children'] = children
return {elem.tag: inner}
def xml2json(xmldata):
pass
#doc = ET.parse(xmldata)
#root = root = ET.fromstring(xmldata)
def write_config(port=8000, Lang='ru', theme="default"):
conf = dict(PORT=port, Lang=Lang, THEME=theme)
with open('./config.json', 'w') as f:
json.dump(conf, f)
return conf
def read_config():
with open('./config.json', 'r') as f:
conf = json.load(f)
return conf
def load_config():
conf = {}
if not os.path.exists("./config.json"):
write_config()
else:
conf = read_config()
return conf
#SORT IN INTALL PAKAGES
#'/var/db/pkg/'
def sort_inatll_pkg():
INSTALL = []
path = '/var/db/pkg'
for d, dirs, files in os.walk(path):
for f in files:
if f.endswith('.ebuild'):
INSTALL.append(f.replace('.ebuild', ""))
#print(str(len(INSTALL)))
return json.dumps({'install_pkgs':INSTALL})
def scan_config_portage():
dir_root ="/etc/portage"
config = {}
i = 0
dr = {}
data = {}
pf={}
for d, dirs, files in os.walk(dir_root):
print(str(d))
i=i+1
for fl in files:
with open(d + "/" +fl) as f:
pf[str(d.split('/')[-1]) + "/"+ fl]= f.read().split('\n')
str(d.split('/')[-1])
print(dr)
config = {'portage': pf}
print("config:\t" + str(config))
return config