Allow commands to return error codes.

This commit is contained in:
Todd Gamblin 2015-01-05 02:33:15 -05:00
parent 5d033fbd0a
commit 935eba2357
3 changed files with 15 additions and 1 deletions

View file

@ -103,7 +103,7 @@ if args.insecure:
# Try to load the particular command asked for and run it
command = spack.cmd.get_command(args.command)
try:
command(parser, args)
return_val = command(parser, args)
except SpackError, e:
if spack.debug:
# In debug mode, raise with a full stack trace.
@ -116,3 +116,11 @@ except SpackError, e:
except KeyboardInterrupt:
sys.stderr.write('\n')
tty.die("Keyboard interrupt.")
# Allow commands to return values if they want to exit with some ohter code.
if return_val is None:
sys.exit(0)
elif isinstance(return_val, int):
sys.exit(return_val)
else:
tty.die("Bad return value from command %s: %s" % (args.command, return_val))

View file

@ -31,6 +31,8 @@
description = "Generate graphs of package dependency relationships."
def setup_parser(subparser):
setup_parser.parser = subparser
method = subparser.add_mutually_exclusive_group()
method.add_argument(
'--ascii', action='store_true',
@ -50,6 +52,9 @@ def graph(parser, args):
specs = spack.cmd.parse_specs(
args.specs, normalize=True, concretize=args.concretize)
if not specs:
setup_parser.parser.print_help()
return 1
if args.dot: # Dot graph only if asked for.
graph_dot(*specs)

View file

@ -41,6 +41,7 @@ def setup_parser(subparser):
def md5(parser, args):
if not args.files:
setup_parser.parser.print_help()
return 1
for f in args.files:
if not os.path.isfile(f):