Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/pycpio/errors/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .errors import UnavailableCompression

__all__ = ["UnavailableCompression"]
2 changes: 2 additions & 0 deletions src/pycpio/errors/errors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class UnavailableCompression(Exception):
pass
7 changes: 6 additions & 1 deletion src/pycpio/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from zenlib.util import get_kwargs

from pycpio import PyCPIO
from pycpio.errors import UnavailableCompression


def main():
Expand Down Expand Up @@ -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())
Expand Down
5 changes: 3 additions & 2 deletions src/pycpio/writer/writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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))
Expand Down