From 3de384497db7d4b7ef6cff48e8624ebc4596022d Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Sat, 13 Nov 2010 02:09:42 -0800 Subject: [PATCH] Handle KeyboardInterrupt with less annoying spew to stderr. --- redo-ifchange.py | 19 +++++++++++-------- redo-ifcreate.py | 17 ++++++++++------- redo.py | 31 +++++++++++++++++-------------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/redo-ifchange.py b/redo-ifchange.py index c7fb0d6..4602c12 100755 --- a/redo-ifchange.py +++ b/redo-ifchange.py @@ -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:]: - mkdirp('%s/.redo' % vars.BASE) - add_dep(vars.TARGET, 'm', t) - if dirty_deps(t, depth = ''): - want_build.append(t) +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: - os.execvp('redo', ['redo', '--'] + want_build) + if want_build: + os.execvp('redo', ['redo', '--'] + want_build) +except KeyboardInterrupt: + sys.exit(200) diff --git a/redo-ifcreate.py b/redo-ifcreate.py index b689333..3ddbfc8 100755 --- a/redo-ifcreate.py +++ b/redo-ifcreate.py @@ -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:]: - 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) +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) diff --git a/redo.py b/redo.py index a48edde..417658e 100755 --- a/redo.py +++ b/redo.py @@ -118,17 +118,20 @@ 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: - if os.path.exists('%s/all.do' % t): - # t is a directory, but it has a default target - t = '%s/all' % t - mkdirp('%s/.redo' % vars.BASE) - os.chdir(startdir) - try: - build(t) - except BuildError, e: - err('%s\n' % e) - retcode = 1 -sys.exit(retcode) +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 + mkdirp('%s/.redo' % vars.BASE) + os.chdir(startdir) + try: + build(t) + except BuildError, e: + err('%s\n' % e) + retcode = 1 + sys.exit(retcode) +except KeyboardInterrupt: + sys.exit(200)