Signed-off-by: Matt Turner <[email protected]>
---
catalyst/targets/snapshot.py | 34 ++++++++++++++++++++++------------
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/catalyst/targets/snapshot.py b/catalyst/targets/snapshot.py
index b6c72c51..497b2918 100644
--- a/catalyst/targets/snapshot.py
+++ b/catalyst/targets/snapshot.py
@@ -10,7 +10,7 @@ from pathlib import Path
from catalyst import log
from catalyst.base.targetbase import TargetBase
from catalyst.lock import write_lock
-from catalyst.support import command
+from catalyst.support import CatalystError, command
class snapshot(TargetBase):
"""
@@ -52,17 +52,27 @@ class snapshot(TargetBase):
repouri, self.gitdir],
]
- for cmd in git_cmds:
- log.notice('>>> ' + ' '.join(cmd))
- subprocess.run(cmd,
- encoding='utf-8',
- close_fds=False)
-
- sp = subprocess.run([self.git, '-C', self.gitdir, 'rev-parse',
'stable'],
- stdout=subprocess.PIPE,
- encoding='utf-8',
- close_fds=False)
- return sp.stdout.rstrip()
+ try:
+ for cmd in git_cmds:
+ log.notice('>>> ' + ' '.join(cmd))
+ subprocess.run(cmd,
+ capture_output=True,
+ check=True,
+ encoding='utf-8',
+ close_fds=False)
+
+ sp = subprocess.run([self.git, '-C', self.gitdir, 'rev-parse',
'stable'],
+ stdout=subprocess.PIPE,
+ capture_output=True,
+ check=True,
+ encoding='utf-8',
+ close_fds=False)
+ return sp.stdout.rstrip()
+
+ except subprocess.CalledProcessError as e:
+ raise CatalystError(f'{e.cmd} failed with return code'
+ f'{e.returncode}\n'
+ f'{e.output}\n')
def run(self):
if self.settings['snapshot_treeish'] == 'stable':
--
2.26.2