From 53712f76cea0e08c89b50adb15c16ce602e101a4 Mon Sep 17 00:00:00 2001 From: infeeeee Date: Tue, 28 Mar 2023 22:52:25 +0200 Subject: [PATCH] Added HEADLESS loglevel --- README.md | 3 ++- dyn2py/__init__.py | 13 +++++++++++-- dyn2py/files.py | 7 +++++++ dyn2py/options.py | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8fba14e..b920321 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ options: -h, --help show this help message and exit -v, --version show program's version number and exit -l LOGLEVEL, --loglevel LOGLEVEL - set log level, possible options: CRITICAL, ERROR, WARNING, INFO, DEBUG + set log level, possible options: HEADLESS, CRITICAL, ERROR, WARNING, INFO, DEBUG -n, --dry-run do not modify files, only show log -F, --force overwrite even if the files are older -b, --backup create a backup for updated files @@ -68,6 +68,7 @@ dynamo options, only for processing Dynamo graphs: The script by default overwrites older files with newer files. Do not move the source Dynamo graphs, or update won't work with them later. Multiple sources are supported, separate them by spaces. +HEADLESS loglevel only prints modified filenames. ``` #### Examples diff --git a/dyn2py/__init__.py b/dyn2py/__init__.py index 6211491..681dde9 100644 --- a/dyn2py/__init__.py +++ b/dyn2py/__init__.py @@ -45,6 +45,7 @@ def __command_line() -> None: The script by default overwrites older files with newer files. Do not move the source Dynamo graphs, or update won't work with them later. Multiple sources are supported, separate them by spaces. + HEADLESS loglevel only prints modified filenames. """) ) @@ -117,8 +118,13 @@ def run(options: Options) -> None: from_command_line = bool(inspect.stack()[1].function == "__command_line") # Set up logging: + if options.loglevel == "HEADLESS": + loglevel = "CRITICAL" + else: + loglevel = options.loglevel + logging.basicConfig(format='%(levelname)s: %(message)s', - level=options.loglevel) + level=loglevel) logging.debug(f"Run options: {vars(options)}") # Set up sources: @@ -197,4 +203,7 @@ def run(options: Options) -> None: # Write files at the end: for f in DynamoFile.open_files | PythonFile.open_files: - f.write(options) + try: + f.write(options) + except FileNotFoundError: + logging.error(f"Cannot save file! {f.filepath}") diff --git a/dyn2py/files.py b/dyn2py/files.py index ea19452..82708e2 100644 --- a/dyn2py/files.py +++ b/dyn2py/files.py @@ -120,6 +120,7 @@ class File(): Raises: TypeError: If called on a File object + FileNotFoundError: Target folder does not exist """ if not options: @@ -140,14 +141,20 @@ class File(): backup_path = self.dirpath.joinpath(backup_filename) logging.info(f"Creating backup to {backup_path}") self.filepath.rename(backup_path) + if options.loglevel == "HEADLESS": + print(backup_path) # Call filetype specific methods: if options.dry_run: logging.info( f"Should write file, but it's a dry-run: {self.filepath}") else: + if not self.dirpath.exists(): + raise FileNotFoundError("File dir does not exist!") logging.info(f"Writing file: {self.filepath}") self._write_file() + if options.loglevel == "HEADLESS": + print(self.filepath) def _write_file(self): """Should be implemented in subclasses diff --git a/dyn2py/options.py b/dyn2py/options.py index 007ab4b..ae4355f 100644 --- a/dyn2py/options.py +++ b/dyn2py/options.py @@ -3,7 +3,7 @@ import argparse import pathlib -LOGLEVELS = ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"] +LOGLEVELS = ["HEADLESS", "CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"] DEFAULT_LOGLEVEL = "INFO" FILTERS = ["py", "dyn"]