This commit is contained in:
mwiegand 2021-06-21 13:34:50 +02:00
parent ed9a92da45
commit 1a5e3cd388

50
libs/apt.py Normal file
View file

@ -0,0 +1,50 @@
# https://manpages.debian.org/jessie/apt/sources.list.5.de.html
from urllib.parse import urlparse
from re import search, sub
class AptSource():
def __init__(self, string):
self.options = {
k:v.split('=') for k,v in (
e.split('=') for e in search(r'\[(.*)\]', string)[1].split()
)
}
parts = sub(r'\[.*\]', '', string).split()
self.type = parts[0]
self.url = urlparse(parts[1])
self.suite = parts[2]
self.components = parts[3:]
def render(self):
parts = [
self.type,
self.url.geturl(),
self.suite,
' '.join(self.components),
]
if self.options:
parts.insert(
1,
"[{}]".format(
' '.join(
'{}={}'.format(
k,
','.join(v)
) for k,v in self.options.items()
)
)
)
return ' '.join(parts)
# source = AptSource('deb [arch=amd64 trusted=true] http://deb.debian.org/debian buster-backports main contrib non-free')
# print(repr(source))
# print(source.type)
# print(source.options)
# source.options['test'] = ['was', 'ist', 'das']
# print(source.url)
# print(source.suite)
# print(source.components)
# print(source.render())