From cbcf4f6f2c2264cff9e52ebb1cfd654a302d74f0 Mon Sep 17 00:00:00 2001 From: David Luevano Alvarado Date: Wed, 20 Apr 2022 23:08:10 -0600 Subject: minor refactoring --- src/pyssg/utils.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) (limited to 'src/pyssg/utils.py') diff --git a/src/pyssg/utils.py b/src/pyssg/utils.py index a24d7ca..ffaf8ba 100644 --- a/src/pyssg/utils.py +++ b/src/pyssg/utils.py @@ -1,10 +1,57 @@ import os import sys import shutil -import logging -from logging import Logger +from logging import Logger, getLogger -log: Logger = logging.getLogger(__name__) +log: Logger = getLogger(__name__) + + +def get_file_list(path: str, + exts: list[str], + exclude: list[str]=None) -> list[str]: + log.debug('retrieving file list in path "%s" that contain file' + ' extensions (%s) except (%s)', + path, ', '.join(exts), + ', '.join(exclude if exclude is not None else [])) + out: list[str] = [] + for root, dirs, files in os.walk(path): + if exclude is not None: + log.debug('removing excludes from list') + dirs[:] = [d for d in dirs if d not in exclude] + + for f in files: + if f.endswith(tuple(exts)): + stripped_f: str = os.path.join(root, f).replace(path, '')[1:] + out.append(stripped_f) + log.debug('added file "%s" without "%s" part: "%s"', + f, path, stripped_f) + else: + log.debug('ignoring file "%s" as it doesn\'t contain' + ' any of the extensions (%s)', f, ', '.join(exts)) + + return out + + +def get_dir_structure(path: str, + exclude: list[str]=None) -> list[str]: + log.debug('retrieving dir structure in path "%s" except (%s)', + path, ', '.join(exclude if exclude is not None else [])) + out: list[str] = [] + for root, dirs, files in os.walk(path): + if exclude is not None: + log.debug('removing excludes from list') + dirs[:] = [d for d in dirs if d not in exclude] + + for d in dirs: + if root in out: + out.remove(root) + log.debug('removed dir "%s" as it already is in the list', root) + joined_dir: str = os.path.join(root, d) + out.append(joined_dir) + log.debug('added dir "%s" to the list', joined_dir) + + log.debug('removing "%s" from all dirs in list', path) + return [o.replace(path, '')[1:] for o in out] def create_dir(path: str, p: bool=False) -> None: -- cgit v1.2.3-54-g00ecf