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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# -*- 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():
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
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))
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