diff --git a/src/pycpio/errors/__init__.py b/src/pycpio/errors/__init__.py new file mode 100644 index 0000000..2b52b3b --- /dev/null +++ b/src/pycpio/errors/__init__.py @@ -0,0 +1,3 @@ +from .errors import UnavailableCompression + +__all__ = ["UnavailableCompression"] diff --git a/src/pycpio/errors/errors.py b/src/pycpio/errors/errors.py new file mode 100644 index 0000000..f18879d --- /dev/null +++ b/src/pycpio/errors/errors.py @@ -0,0 +1,2 @@ +class UnavailableCompression(Exception): + pass diff --git a/src/pycpio/main.py b/src/pycpio/main.py index ef182b7..a6f5997 100755 --- a/src/pycpio/main.py +++ b/src/pycpio/main.py @@ -5,6 +5,7 @@ from zenlib.util import get_kwargs from pycpio import PyCPIO +from pycpio.errors import UnavailableCompression def main(): @@ -76,7 +77,11 @@ def main(): if output_file := kwargs.get("output"): compression = kwargs.get("compress") - c.write_cpio_file(Path(output_file), compression=compression) + try: + c.write_cpio_file(Path(output_file), compression=compression) + except UnavailableCompression as e: + c.logger.critical(e) + exit(1) if kwargs.get("list"): print(c.list_files()) diff --git a/src/pycpio/writer/writer.py b/src/pycpio/writer/writer.py index 869aee2..7a8a0b3 100644 --- a/src/pycpio/writer/writer.py +++ b/src/pycpio/writer/writer.py @@ -3,6 +3,7 @@ from pathlib import Path from pycpio.header import HEADER_NEW, CPIOHeader +from pycpio.errors import UnavailableCompression from zenlib.logging import loggify from zenlib.util import colorize @@ -61,7 +62,7 @@ def compress(self, data): compression_module = "zstd.compress" compression_args = (self.compression_level,) elif self.compression is not False: - raise NotImplementedError("Compression type not supported: %s" % self.compression) + raise UnavailableCompression("Compression type not supported: %s" % self.compression) else: self.logger.info("No compression specified, writing uncompressed data.") return data @@ -75,7 +76,7 @@ def compress(self, data): compressor = getattr(__import__(module), func) self.logger.debug("Compressing data with: %s" % compression_module) except ImportError as e: - raise ImportError("Failed to import compression module: %s" % compression_module) from e + raise UnavailableCompression("Failed to import compression module: %s" % compression_module) from e self.logger.info( "[%s] Compressing the CPIO data, original size: %.2f MiB" % (self.compression.upper(), len(data) / (2**20))