Handle KeyboardInterrupt with less annoying spew to stderr.

This commit is contained in:
Avery Pennarun 2010-11-13 02:09:42 -08:00
commit 3de384497d
3 changed files with 38 additions and 29 deletions

View file

@ -48,12 +48,15 @@ if not vars.TARGET:
err('redo-ifchange: error: must be run from inside a .do\n')
sys.exit(100)
want_build = []
for t in sys.argv[1:]:
try:
want_build = []
for t in sys.argv[1:]:
mkdirp('%s/.redo' % vars.BASE)
add_dep(vars.TARGET, 'm', t)
if dirty_deps(t, depth = ''):
want_build.append(t)
if want_build:
if want_build:
os.execvp('redo', ['redo', '--'] + want_build)
except KeyboardInterrupt:
sys.exit(200)

View file

@ -8,10 +8,13 @@ if not vars.TARGET:
err('redo-ifcreate: error: must be run from inside a .do\n')
sys.exit(100)
for t in sys.argv[1:]:
try:
for t in sys.argv[1:]:
mkdirp('%s/.redo' % vars.BASE)
if os.path.exists(t):
err('redo-ifcreate: error: %r already exists\n' % t)
sys.exit(1)
else:
add_dep(vars.TARGET, 'c', t)
except KeyboardInterrupt:
sys.exit(200)

11
redo.py
View file

@ -118,9 +118,10 @@ if not vars.DEPTH:
dirnames = [os.path.dirname(p) for p in exenames]
os.environ['PATH'] = ':'.join(dirnames) + ':' + os.environ['PATH']
retcode = 0
startdir = os.getcwd()
for t in targets:
try:
retcode = 0
startdir = os.getcwd()
for t in targets:
if os.path.exists('%s/all.do' % t):
# t is a directory, but it has a default target
t = '%s/all' % t
@ -131,4 +132,6 @@ for t in targets:
except BuildError, e:
err('%s\n' % e)
retcode = 1
sys.exit(retcode)
sys.exit(retcode)
except KeyboardInterrupt:
sys.exit(200)