mirror of
https://gitlab.com/dslackw/slpkg.git
synced 2025-01-18 10:26:29 +01:00
Updated for blacklist pattern
This commit is contained in:
parent
b49ca1fc15
commit
27b896ca5f
9 changed files with 42 additions and 51 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
4.7.8 - 12/04/203
|
||||||
|
Added:
|
||||||
|
- Module to support for Unix shell-style wildcards for blacklist
|
||||||
|
|
||||||
4.7.7 - 07/04/2023
|
4.7.7 - 07/04/2023
|
||||||
Updated:
|
Updated:
|
||||||
- Improve speed (Replace multi SQL queries)
|
- Improve speed (Replace multi SQL queries)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from slpkg.blacklist import Blacklist
|
from slpkg.utilities import Utilities
|
||||||
from slpkg.models.models import BinariesTable
|
from slpkg.models.models import BinariesTable
|
||||||
from slpkg.models.models import session as Session
|
from slpkg.models.models import session as Session
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ class BinQueries:
|
||||||
self.repo: str = repo
|
self.repo: str = repo
|
||||||
self.session = Session
|
self.session = Session
|
||||||
|
|
||||||
self.black = Blacklist()
|
self.utils = Utilities()
|
||||||
|
|
||||||
def repository_data(self) -> dict:
|
def repository_data(self) -> dict:
|
||||||
""" Returns a dictionary with the repository data. """
|
""" Returns a dictionary with the repository data. """
|
||||||
|
@ -36,7 +36,7 @@ class BinQueries:
|
||||||
data.checksum,
|
data.checksum,
|
||||||
data.repo)
|
data.repo)
|
||||||
for data in repository_data
|
for data in repository_data
|
||||||
if data.name not in self.black.packages()
|
if not self.utils.blacklist_pattern(data.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
return repos_dict
|
return repos_dict
|
||||||
|
@ -60,7 +60,7 @@ class BinQueries:
|
||||||
data.checksum,
|
data.checksum,
|
||||||
data.repo)
|
data.repo)
|
||||||
for data in repositories_data
|
for data in repositories_data
|
||||||
if data.name not in self.black.packages()
|
if not self.utils.blacklist_pattern(data.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
return repos_dict
|
return repos_dict
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from slpkg.blacklist import Blacklist
|
from slpkg.utilities import Utilities
|
||||||
from slpkg.repositories import Repositories
|
from slpkg.repositories import Repositories
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ class Required:
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
self.repo: str = repo
|
self.repo: str = repo
|
||||||
self.repos = Repositories()
|
self.repos = Repositories()
|
||||||
self.black = Blacklist()
|
self.utils = Utilities()
|
||||||
|
|
||||||
self.special_repos: list = [
|
self.special_repos: list = [
|
||||||
self.repos.salixos_repo_name,
|
self.repos.salixos_repo_name,
|
||||||
|
@ -40,7 +40,7 @@ class Required:
|
||||||
|
|
||||||
# Remove requirements that are included as dependencies,
|
# Remove requirements that are included as dependencies,
|
||||||
# but are not included in the repository.
|
# but are not included in the repository.
|
||||||
if req not in list(self.data.keys()) or req in self.black.packages():
|
if req not in list(self.data.keys()) or self.utils.blacklist_pattern(req):
|
||||||
required.remove(req)
|
required.remove(req)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from slpkg.configs import Configs
|
from slpkg.configs import Configs
|
||||||
from slpkg.blacklist import Blacklist
|
|
||||||
from slpkg.utilities import Utilities
|
from slpkg.utilities import Utilities
|
||||||
from slpkg.repositories import Repositories
|
from slpkg.repositories import Repositories
|
||||||
from slpkg.models.models import session as Session
|
from slpkg.models.models import session as Session
|
||||||
|
@ -21,7 +20,6 @@ class Check(Configs):
|
||||||
self.flags: list = flags
|
self.flags: list = flags
|
||||||
self.data: dict = data
|
self.data: dict = data
|
||||||
|
|
||||||
self.black = Blacklist()
|
|
||||||
self.utils = Utilities()
|
self.utils = Utilities()
|
||||||
self.repos = Repositories()
|
self.repos = Repositories()
|
||||||
|
|
||||||
|
@ -82,7 +80,7 @@ class Check(Configs):
|
||||||
blacklist: list = []
|
blacklist: list = []
|
||||||
|
|
||||||
for pkg in package:
|
for pkg in package:
|
||||||
if pkg in self.black.packages():
|
if self.utils.blacklist_pattern(pkg):
|
||||||
blacklist.append(pkg)
|
blacklist.append(pkg)
|
||||||
|
|
||||||
if blacklist:
|
if blacklist:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from slpkg.blacklist import Blacklist
|
from slpkg.utilities import Utilities
|
||||||
|
|
||||||
|
|
||||||
class Requires:
|
class Requires:
|
||||||
|
@ -13,7 +13,7 @@ class Requires:
|
||||||
self.data: dict = data
|
self.data: dict = data
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
|
|
||||||
self.black = Blacklist()
|
self.utils = Utilities()
|
||||||
|
|
||||||
def resolve(self) -> list:
|
def resolve(self) -> list:
|
||||||
""" Resolve the dependencies. """
|
""" Resolve the dependencies. """
|
||||||
|
@ -23,7 +23,7 @@ class Requires:
|
||||||
|
|
||||||
# Remove requirements that are included as dependencies,
|
# Remove requirements that are included as dependencies,
|
||||||
# but are not included in the repository.
|
# but are not included in the repository.
|
||||||
if req not in list(self.data.keys()) or req in self.black.packages():
|
if req not in list(self.data.keys()) or self.utils.blacklist_pattern(req):
|
||||||
requires.remove(req)
|
requires.remove(req)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from sqlalchemy import inspect
|
|
||||||
|
|
||||||
from slpkg.configs import Configs
|
from slpkg.configs import Configs
|
||||||
from slpkg.blacklist import Blacklist
|
from slpkg.utilities import Utilities
|
||||||
from slpkg.repositories import Repositories
|
from slpkg.repositories import Repositories
|
||||||
from slpkg.models.models import session as Session
|
from slpkg.models.models import session as Session
|
||||||
from slpkg.models.models import SBoTable, PonceTable
|
from slpkg.models.models import SBoTable, PonceTable
|
||||||
|
@ -18,7 +16,7 @@ class SBoQueries(Configs):
|
||||||
self.session = Session
|
self.session = Session
|
||||||
|
|
||||||
self.repos = Repositories()
|
self.repos = Repositories()
|
||||||
self.black = Blacklist()
|
self.utils = Utilities()
|
||||||
|
|
||||||
# Switch between sbo and ponce repository.
|
# Switch between sbo and ponce repository.
|
||||||
self.sbo_table = SBoTable
|
self.sbo_table = SBoTable
|
||||||
|
@ -40,7 +38,7 @@ class SBoQueries(Configs):
|
||||||
data.requires,
|
data.requires,
|
||||||
data.short_description)
|
data.short_description)
|
||||||
for data in repository_data
|
for data in repository_data
|
||||||
if data.name not in self.black.packages()
|
if not self.utils.blacklist_pattern(data.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
return repos_dict
|
return repos_dict
|
||||||
|
@ -51,12 +49,3 @@ class SBoQueries(Configs):
|
||||||
self.sbo_table.id).count()
|
self.sbo_table.id).count()
|
||||||
|
|
||||||
return count
|
return count
|
||||||
|
|
||||||
def repo_name(self) -> str:
|
|
||||||
""" Returns the repo name by the table. """
|
|
||||||
table = inspect(self.sbo_table)
|
|
||||||
repo = self.repos.sbo_repo_name
|
|
||||||
if table.tables[0].name == 'poncetable':
|
|
||||||
repo = self.repos.ponce_repo_name
|
|
||||||
|
|
||||||
return repo
|
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
from slpkg.configs import Configs
|
from slpkg.configs import Configs
|
||||||
from slpkg.views.ascii import Ascii
|
from slpkg.views.ascii import Ascii
|
||||||
from slpkg.utilities import Utilities
|
from slpkg.utilities import Utilities
|
||||||
from slpkg.blacklist import Blacklist
|
|
||||||
|
|
||||||
|
|
||||||
class Tracking(Configs):
|
class Tracking(Configs):
|
||||||
|
@ -18,7 +17,6 @@ class Tracking(Configs):
|
||||||
self.ascii = Ascii()
|
self.ascii = Ascii()
|
||||||
self.color = self.colour()
|
self.color = self.colour()
|
||||||
self.utils = Utilities()
|
self.utils = Utilities()
|
||||||
self.black = Blacklist()
|
|
||||||
|
|
||||||
self.llc: str = self.ascii.lower_left_corner
|
self.llc: str = self.ascii.lower_left_corner
|
||||||
self.hl: str = self.ascii.horizontal_line
|
self.hl: str = self.ascii.horizontal_line
|
||||||
|
@ -69,7 +67,7 @@ class Tracking(Configs):
|
||||||
print(f' {self.cyan}No dependencies{self.endc}')
|
print(f' {self.cyan}No dependencies{self.endc}')
|
||||||
else:
|
else:
|
||||||
for i, req in enumerate(requires, start=1):
|
for i, req in enumerate(requires, start=1):
|
||||||
if req not in self.black.packages():
|
if not self.utils.blacklist_pattern(req):
|
||||||
|
|
||||||
require: str = f'{self.cyan}{req}{self.endc}'
|
require: str = f'{self.cyan}{req}{self.endc}'
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import re
|
||||||
import time
|
import time
|
||||||
import shutil
|
import shutil
|
||||||
import logging
|
import logging
|
||||||
|
import fnmatch
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Generator, Union
|
from typing import Generator, Union
|
||||||
|
@ -31,8 +32,7 @@ class Utilities:
|
||||||
self.endc: str = self.color['endc']
|
self.endc: str = self.color['endc']
|
||||||
self.bred: str = f'{self.bold}{self.red}'
|
self.bred: str = f'{self.bold}{self.red}'
|
||||||
|
|
||||||
self.installed_packages: list = list(self.all_installed())
|
self.installed_packages: dict = dict(self.all_installed())
|
||||||
self.installed_package_names: list = list(self.all_installed_names())
|
|
||||||
|
|
||||||
logging.basicConfig(filename=LoggingConfig.log_file,
|
logging.basicConfig(filename=LoggingConfig.log_file,
|
||||||
filemode='w',
|
filemode='w',
|
||||||
|
@ -41,34 +41,29 @@ class Utilities:
|
||||||
|
|
||||||
def is_package_installed(self, name: str) -> str:
|
def is_package_installed(self, name: str) -> str:
|
||||||
""" Returns the installed package name. """
|
""" Returns the installed package name. """
|
||||||
for package in self.installed_packages:
|
try:
|
||||||
pkg_name: str = self.split_binary_pkg(package)[0]
|
return self.installed_packages[name]
|
||||||
|
except KeyError:
|
||||||
|
return ''
|
||||||
|
|
||||||
if pkg_name == name:
|
def all_installed(self) -> dict:
|
||||||
return package
|
|
||||||
|
|
||||||
return ''
|
|
||||||
|
|
||||||
def all_installed(self) -> Generator:
|
|
||||||
""" Return all installed packages from /val/log/packages folder. """
|
""" Return all installed packages from /val/log/packages folder. """
|
||||||
|
# installed_dict: dict = {}
|
||||||
var_log_packages: Path = Path(self.configs.log_packages)
|
var_log_packages: Path = Path(self.configs.log_packages)
|
||||||
try:
|
try:
|
||||||
for file in var_log_packages.glob(self.configs.file_pattern):
|
for file in var_log_packages.glob(self.configs.file_pattern):
|
||||||
name = self.split_binary_pkg(file.name)[0]
|
name = self.split_binary_pkg(file.name)[0]
|
||||||
|
|
||||||
if not name.startswith('.') and name not in self.black.packages():
|
if not name.startswith('.') and not self.blacklist_pattern(name):
|
||||||
yield file.name
|
yield name, file.name
|
||||||
|
|
||||||
|
# return installed_dict
|
||||||
except ValueError as err:
|
except ValueError as err:
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logger.info('%s: %s: %s', self.__class__.__name__,
|
logger.info('%s: %s: %s', self.__class__.__name__,
|
||||||
Utilities.all_installed.__name__,
|
Utilities.all_installed.__name__,
|
||||||
err)
|
err)
|
||||||
|
|
||||||
def all_installed_names(self) -> Generator:
|
|
||||||
""" Return all installed packages names from /val/log/packages folder. """
|
|
||||||
for package in self.installed_packages:
|
|
||||||
yield self.split_binary_pkg(package)[0]
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def remove_file_if_exists(path: Path, file: str) -> None:
|
def remove_file_if_exists(path: Path, file: str) -> None:
|
||||||
""" Clean the old files. """
|
""" Clean the old files. """
|
||||||
|
@ -196,3 +191,11 @@ class Utilities:
|
||||||
packages += list(data.keys())
|
packages += list(data.keys())
|
||||||
|
|
||||||
return packages
|
return packages
|
||||||
|
|
||||||
|
def blacklist_pattern(self, name):
|
||||||
|
""" This module provides support for Unix shell-style wildcards. """
|
||||||
|
if [
|
||||||
|
black for black in self.black.packages()
|
||||||
|
if fnmatch.fnmatch(name, black)
|
||||||
|
]:
|
||||||
|
return True
|
||||||
|
|
|
@ -10,7 +10,6 @@ from slpkg.upgrade import Upgrade
|
||||||
from slpkg.views.ascii import Ascii
|
from slpkg.views.ascii import Ascii
|
||||||
from slpkg.utilities import Utilities
|
from slpkg.utilities import Utilities
|
||||||
from slpkg.dialog_box import DialogBox
|
from slpkg.dialog_box import DialogBox
|
||||||
from slpkg.sbos.queries import SBoQueries
|
|
||||||
from slpkg.repositories import Repositories
|
from slpkg.repositories import Repositories
|
||||||
from slpkg.models.models import LogsDependencies
|
from slpkg.models.models import LogsDependencies
|
||||||
from slpkg.models.models import session as Session
|
from slpkg.models.models import session as Session
|
||||||
|
@ -65,7 +64,7 @@ class ViewMessage(Configs):
|
||||||
repo: str = self.repo
|
repo: str = self.repo
|
||||||
else:
|
else:
|
||||||
version: str = self.data[package][2]
|
version: str = self.data[package][2]
|
||||||
repo: str = SBoQueries().repo_name()
|
repo: str = self.repos.sbo_enabled_repository
|
||||||
|
|
||||||
if mode in ['install', 'download']:
|
if mode in ['install', 'download']:
|
||||||
color: str = self.cyan
|
color: str = self.cyan
|
||||||
|
@ -75,13 +74,13 @@ class ViewMessage(Configs):
|
||||||
color: str = self.violet
|
color: str = self.violet
|
||||||
|
|
||||||
# If the package is installed and change the color to gray.
|
# If the package is installed and change the color to gray.
|
||||||
if package in self.utils.installed_package_names and mode == 'install':
|
if package in self.utils.installed_packages.keys() and mode == 'install':
|
||||||
color: str = self.grey
|
color: str = self.grey
|
||||||
|
|
||||||
if self.upgrade.is_package_upgradeable(package) and mode == 'install':
|
if self.upgrade.is_package_upgradeable(package) and mode == 'install':
|
||||||
color: str = self.violet
|
color: str = self.violet
|
||||||
|
|
||||||
if (package in self.utils.installed_package_names and mode == 'install'
|
if (package in self.utils.installed_packages.keys() and mode == 'install'
|
||||||
and self.option_for_reinstall):
|
and self.option_for_reinstall):
|
||||||
color: str = self.violet
|
color: str = self.violet
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue