48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import datetime
|
|
import os
|
|
|
|
import architecture
|
|
import arguments
|
|
import distribution
|
|
import msys
|
|
import repository
|
|
|
|
|
|
class Local(repository.Repository):
|
|
def __init__(self):
|
|
super().__init__(arguments.directory)
|
|
self.temporary = arguments.temporary
|
|
self.load()
|
|
|
|
def load(self):
|
|
distro = os.path.join(
|
|
self.location, distribution.DISTRIBUTION)
|
|
d = {}
|
|
_, architectures, _ = next(os.walk(distro))
|
|
for arch in [a for a in architectures
|
|
if a in architecture.ARCHITECTURES.keys()]:
|
|
directory = os.path.join(distro, arch)
|
|
_, _, files = next(os.walk(directory))
|
|
archives = sorted([file for file in files
|
|
if file.endswith(msys.ARCHIVE)])
|
|
archive = archives[-1]
|
|
d[arch] = archive
|
|
self.archives = d
|
|
|
|
def get_files(self, path):
|
|
*_, files = next(os.walk(os.path.join(self.location, path)))
|
|
return files
|
|
|
|
def get_temporary(self):
|
|
return os.path.join(self.temporary,
|
|
datetime.datetime.now()
|
|
.strftime('%Y%m%d%H%M%S'))
|
|
|
|
def __str__(self):
|
|
lines = [
|
|
super().__str__(),
|
|
'Archives:',
|
|
]
|
|
for arch, archive in reversed(sorted(self.archives.items())):
|
|
lines.append(f'{arch} → {archive}')
|
|
return os.linesep.join(lines)
|