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"]