Skip to content

Commit 1516512

Browse files
authored
Merge pull request #12 from desultory/dev
improve missing compressor exception handling/error messages
2 parents 2004d51 + 2e2bc55 commit 1516512

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

src/pycpio/errors/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .errors import UnavailableCompression
2+
3+
__all__ = ["UnavailableCompression"]

src/pycpio/errors/errors.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class UnavailableCompression(Exception):
2+
pass

src/pycpio/main.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from zenlib.util import get_kwargs
66

77
from pycpio import PyCPIO
8+
from pycpio.errors import UnavailableCompression
89

910

1011
def main():
@@ -76,7 +77,11 @@ def main():
7677

7778
if output_file := kwargs.get("output"):
7879
compression = kwargs.get("compress")
79-
c.write_cpio_file(Path(output_file), compression=compression)
80+
try:
81+
c.write_cpio_file(Path(output_file), compression=compression)
82+
except UnavailableCompression as e:
83+
c.logger.critical(e)
84+
exit(1)
8085

8186
if kwargs.get("list"):
8287
print(c.list_files())

src/pycpio/writer/writer.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from pathlib import Path
44

55
from pycpio.header import HEADER_NEW, CPIOHeader
6+
from pycpio.errors import UnavailableCompression
67
from zenlib.logging import loggify
78
from zenlib.util import colorize
89

@@ -61,7 +62,7 @@ def compress(self, data):
6162
compression_module = "zstd.compress"
6263
compression_args = (self.compression_level,)
6364
elif self.compression is not False:
64-
raise NotImplementedError("Compression type not supported: %s" % self.compression)
65+
raise UnavailableCompression("Compression type not supported: %s" % self.compression)
6566
else:
6667
self.logger.info("No compression specified, writing uncompressed data.")
6768
return data
@@ -75,7 +76,7 @@ def compress(self, data):
7576
compressor = getattr(__import__(module), func)
7677
self.logger.debug("Compressing data with: %s" % compression_module)
7778
except ImportError as e:
78-
raise ImportError("Failed to import compression module: %s" % compression_module) from e
79+
raise UnavailableCompression("Failed to import compression module: %s" % compression_module) from e
7980

8081
self.logger.info(
8182
"[%s] Compressing the CPIO data, original size: %.2f MiB" % (self.compression.upper(), len(data) / (2**20))

0 commit comments

Comments
 (0)