slpkg/slpkg/install_data.py

78 lines
2.4 KiB
Python
Raw Normal View History

#!/usr/bin/python3
# -*- coding: utf-8 -*-
2022-12-30 16:40:11 +01:00
from pathlib import Path
from typing import Union
2023-02-28 20:43:04 +01:00
from slpkg.queries import SBoQueries
2022-06-18 20:35:23 +02:00
from slpkg.configs import Configs
2023-02-28 20:43:04 +01:00
from slpkg.utilities import Utilities
2022-06-17 18:36:07 +02:00
from slpkg.models.models import session as Session
2023-03-05 16:49:15 +01:00
from slpkg.models.models import SBoTable, PonceTable
2023-01-16 23:47:01 +01:00
class CreateData(Configs):
""" Reads the SLACKBUILDS.TXT file and inserts them into the database. """
def __init__(self):
2023-01-16 23:47:01 +01:00
super(Configs, self).__init__()
2023-03-01 17:03:35 +01:00
self.session = Session
2023-02-28 20:43:04 +01:00
self.utils = Utilities()
self.query = SBoQueries('')
2023-03-05 18:52:13 +01:00
def install_sbo_table(self) -> None:
2023-02-28 23:11:20 +01:00
""" Install the data for SBo repository. """
sbo_tags = [
'SLACKBUILD NAME:',
'SLACKBUILD LOCATION:',
'SLACKBUILD FILES:',
'SLACKBUILD VERSION:',
'SLACKBUILD DOWNLOAD:',
'SLACKBUILD DOWNLOAD_x86_64:',
'SLACKBUILD MD5SUM:',
'SLACKBUILD MD5SUM_x86_64:',
'SLACKBUILD REQUIRES:',
'SLACKBUILD SHORT DESCRIPTION:'
]
2023-03-05 16:49:15 +01:00
sbo_table = SBoTable
2023-01-16 23:47:01 +01:00
path = Path(self.sbo_repo_path, self.sbo_txt)
2023-03-05 16:49:15 +01:00
if self.ponce_repo:
sbo_table = PonceTable
path = Path(self.ponce_repo_path, self.ponce_txt)
2023-03-01 17:03:35 +01:00
sbo_file: list = self.read_file(path)
2023-02-28 22:54:56 +01:00
cache: list = [] # init cache
2023-01-02 12:42:32 +01:00
print('\nCreating the database... ', end='', flush=True)
for i, line in enumerate(sbo_file, 1):
2022-06-20 19:43:56 +02:00
for tag in sbo_tags:
if line.startswith(tag):
line = line.replace(tag, '').strip()
cache.append(line)
if (i % 11) == 0:
2023-03-05 16:49:15 +01:00
data: str = sbo_table(name=cache[0], location=cache[1].split('/')[1],
files=cache[2], version=cache[3],
download=cache[4], download64=cache[5],
md5sum=cache[6], md5sum64=cache[7],
requires=cache[8], short_description=cache[9])
self.session.add(data)
2023-02-28 22:54:56 +01:00
cache: list = [] # reset cache after 11 lines
print('Done')
self.session.commit()
@staticmethod
2022-12-30 16:40:11 +01:00
def read_file(file: Union[str, Path]) -> list:
2022-12-22 21:26:59 +01:00
""" Reads the text file. """
with open(file, 'r', encoding='utf-8') as f:
return f.readlines()