Prettier printing of errors.
This commit is contained in:
parent
91cc82ff4a
commit
0bd6d07155
4 changed files with 26 additions and 8 deletions
10
helpers.py
10
helpers.py
|
|
@ -50,10 +50,19 @@ def _clog(s):
|
||||||
_log('\x1b[32mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s))
|
_log('\x1b[32mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s))
|
||||||
def _bwlog(s):
|
def _bwlog(s):
|
||||||
_log('redo: %s%s' % (vars.DEPTH, s))
|
_log('redo: %s%s' % (vars.DEPTH, s))
|
||||||
|
|
||||||
|
def _cerr(s):
|
||||||
|
_log('\x1b[31mredo: %s\x1b[1m%s\x1b[m' % (vars.DEPTH, s))
|
||||||
|
def _bwerr(s):
|
||||||
|
_log('redo: %s%s' % (vars.DEPTH, s))
|
||||||
|
|
||||||
|
|
||||||
if os.isatty(2):
|
if os.isatty(2):
|
||||||
log = _clog
|
log = _clog
|
||||||
|
err = _cerr
|
||||||
else:
|
else:
|
||||||
log = _bwlog
|
log = _bwlog
|
||||||
|
err = _bwerr
|
||||||
|
|
||||||
|
|
||||||
def debug(s):
|
def debug(s):
|
||||||
|
|
@ -61,7 +70,6 @@ def debug(s):
|
||||||
_log('redo: %s%s' % (vars.DEPTH, s))
|
_log('redo: %s%s' % (vars.DEPTH, s))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def relpath(t, base):
|
def relpath(t, base):
|
||||||
t = os.path.abspath(t)
|
t = os.path.abspath(t)
|
||||||
tparts = t.split('/')
|
tparts = t.split('/')
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,8 @@ def dirty_deps(t, depth):
|
||||||
|
|
||||||
|
|
||||||
if not vars.TARGET:
|
if not vars.TARGET:
|
||||||
sys.stderr.write('redo-ifchange: error: must be run from inside a .do\n')
|
err('redo-ifchange: error: must be run from inside a .do\n')
|
||||||
sys.exit(1)
|
sys.exit(100)
|
||||||
|
|
||||||
want_build = []
|
want_build = []
|
||||||
for t in sys.argv[1:]:
|
for t in sys.argv[1:]:
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ from helpers import *
|
||||||
|
|
||||||
|
|
||||||
if not vars.TARGET:
|
if not vars.TARGET:
|
||||||
sys.stderr.write('redo-ifcreate: error: must be run from inside a .do\n')
|
err('redo-ifcreate: error: must be run from inside a .do\n')
|
||||||
sys.exit(1)
|
sys.exit(100)
|
||||||
|
|
||||||
for t in sys.argv[1:]:
|
for t in sys.argv[1:]:
|
||||||
mkdirp('%s/.redo' % vars.BASE)
|
mkdirp('%s/.redo' % vars.BASE)
|
||||||
|
|
|
||||||
14
redo.py
14
redo.py
|
|
@ -33,6 +33,10 @@ import vars
|
||||||
from helpers import *
|
from helpers import *
|
||||||
|
|
||||||
|
|
||||||
|
class BuildError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def find_do_file(t):
|
def find_do_file(t):
|
||||||
dofile = '%s.do' % t
|
dofile = '%s.do' % t
|
||||||
if os.path.exists(dofile):
|
if os.path.exists(dofile):
|
||||||
|
|
@ -75,7 +79,7 @@ def build(t):
|
||||||
stamp(t)
|
stamp(t)
|
||||||
return # success
|
return # success
|
||||||
else:
|
else:
|
||||||
raise Exception('no rule to make %r' % t)
|
raise BuildError('no rule to make %r' % t)
|
||||||
stamp(dofile)
|
stamp(dofile)
|
||||||
unlink(t)
|
unlink(t)
|
||||||
tmpname = '%s.redo.tmp' % t
|
tmpname = '%s.redo.tmp' % t
|
||||||
|
|
@ -102,7 +106,7 @@ def build(t):
|
||||||
unlink(stampfile)
|
unlink(stampfile)
|
||||||
f.close()
|
f.close()
|
||||||
if rv != 0:
|
if rv != 0:
|
||||||
raise Exception('non-zero return code building %r' % t)
|
raise BuildError('%s: exit code %d' % (t,rv))
|
||||||
|
|
||||||
|
|
||||||
if not vars.DEPTH:
|
if not vars.DEPTH:
|
||||||
|
|
@ -113,8 +117,14 @@ if not vars.DEPTH:
|
||||||
dirnames = [os.path.dirname(p) for p in exenames]
|
dirnames = [os.path.dirname(p) for p in exenames]
|
||||||
os.environ['PATH'] = ':'.join(dirnames) + ':' + os.environ['PATH']
|
os.environ['PATH'] = ':'.join(dirnames) + ':' + os.environ['PATH']
|
||||||
|
|
||||||
|
retcode = 0
|
||||||
startdir = os.getcwd()
|
startdir = os.getcwd()
|
||||||
for t in targets:
|
for t in targets:
|
||||||
mkdirp('%s/.redo' % vars.BASE)
|
mkdirp('%s/.redo' % vars.BASE)
|
||||||
os.chdir(startdir)
|
os.chdir(startdir)
|
||||||
|
try:
|
||||||
build(t)
|
build(t)
|
||||||
|
except BuildError, e:
|
||||||
|
err('%s\n' % e)
|
||||||
|
retcode = 1
|
||||||
|
sys.exit(retcode)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue