feat: rework default entries
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
__all__ = ("Command",)
|
||||
__all__ = (
|
||||
"CommandError",
|
||||
"Command",
|
||||
)
|
||||
|
||||
|
||||
import logging
|
||||
@@ -8,6 +11,12 @@ from pathlib import Path
|
||||
logger = logging.getLogger(">")
|
||||
|
||||
|
||||
class CommandError(RuntimeError):
|
||||
@property
|
||||
def output(self):
|
||||
return self.args[0].decode("utf-8").strip()
|
||||
|
||||
|
||||
class Command:
|
||||
_logger = logger
|
||||
|
||||
@@ -25,15 +34,12 @@ class Command:
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
self._logstd(result.stdout, logging.TRACE)
|
||||
self._logstd(result.stderr, logging.TRACE)
|
||||
if result.returncode != 0:
|
||||
self._logstd(result.stderr, logging.ERROR)
|
||||
raise RuntimeError(result.stderr)
|
||||
else:
|
||||
self._logstd(result.stderr, logging.WARNING)
|
||||
raise CommandError(result.stderr)
|
||||
|
||||
@classmethod
|
||||
def _logstd(cls, data: bytes, level: int):
|
||||
if data:
|
||||
for line in data.decode("utf-8").strip().splitlines():
|
||||
if line:
|
||||
cls._logger.log(level, line)
|
||||
output = data.decode("utf-8").strip()
|
||||
cls._logger.log(level, f"\n{output}\n")
|
||||
|
||||
Reference in New Issue
Block a user