Skip to content

Commit 7a3e3e7

Browse files
committed
Only emit color messages when stdout is a tty
Fixes #213.
1 parent 4192c62 commit 7a3e3e7

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

TarSCM/scm/git.py

+13-15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66

77
from TarSCM.scm.base import Scm
88

9+
def color_red(s):
10+
if not os.isatty(1):
11+
return s
12+
return "\033[0;31m" + s + "\033[0m"
913

1014
class Git(Scm):
1115
scm = 'git'
@@ -200,9 +204,8 @@ def _detect_parent_tag(self, args):
200204

201205
def _detect_version_parent_tag(self, parent_tag, versionformat): # noqa pylint: disable=no-self-use
202206
if not parent_tag:
203-
sys.exit("\033[31mNo parent tag present for the checked out "
204-
"revision, thus @PARENT_TAG@ cannot be expanded."
205-
"\033[0m")
207+
sys.exit(color_red("No parent tag present for the checked out "
208+
"revision, thus @PARENT_TAG@ cannot be expanded."))
206209

207210
versionformat = re.sub('@PARENT_TAG@', parent_tag,
208211
versionformat)
@@ -214,15 +217,14 @@ def check_ancestry(self, parent_tag):
214217
self.clone_dir
215218
)
216219
if rcode:
217-
sys.exit("\033[31m`git rev-parse " + parent_tag + "` failed: " +
218-
tgcommit + "\033[0m")
220+
sys.exit(color_red("`git rev-parse " + parent_tag + "` failed: " +
221+
tgcommit))
219222
rcode, head = self.helpers.run_cmd(
220223
["git", "rev-parse", "HEAD"],
221224
self.clone_dir
222225
)
223226
if rcode:
224-
sys.exit("\033[31m`git rev-parse HEAD` failed: " +
225-
head + "\033[0m")
227+
sys.exit(color_red("`git rev-parse HEAD` failed: " + head))
226228
rcode, mgbase = self.helpers.run_cmd(
227229
["git", "merge-base", parent_tag, "HEAD"],
228230
self.clone_dir
@@ -231,24 +233,20 @@ def check_ancestry(self, parent_tag):
231233
head = head.strip()
232234
mgbase = mgbase.strip()
233235
if mgbase != tgcommit:
234-
sys.exit("\033[31mparent_tag is not an ancestor of HEAD. " +
235-
"Cannot compute a (meaningful) distance.\033[0m")
236+
sys.exit(color_red("parent_tag is not an ancestor of HEAD. " +
237+
"Cannot compute a (meaningful) distance."))
236238

237239
def _detect_version_tag_offset(self, parent_tag, versionformat):
238240
if not parent_tag:
239-
sys.exit("\033[31m@TAG_OFFSET@ cannot be expanded, "
240-
"as no parent tag was discovered.\033[0m")
241-
241+
sys.exit(color_red("@TAG_OFFSET@ cannot be expanded, as no parent tag was discovered."))
242242
self.check_ancestry(parent_tag)
243243
rcode, output = self.helpers.run_cmd(
244244
self._get_scm_cmd() + ['rev-list', '--count', parent_tag + '..HEAD'],
245245
self.clone_dir
246246
)
247247

248248
if rcode:
249-
msg = "\033[31m@TAG_OFFSET@ can not be expanded: %s\033[0m"
250-
msg.format(out)
251-
sys.exit(msg)
249+
sys.exit(color_red("@TAG_OFFSET@ can not be expanded: " + output))
252250

253251
tag_offset = out.strip()
254252
versionformat = re.sub('@TAG_OFFSET@', tag_offset,

0 commit comments

Comments
 (0)