summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2015-01-05 02:33:15 -0500
committerTodd Gamblin <tgamblin@llnl.gov>2015-01-05 02:33:15 -0500
commit935eba23579af1d64e56fea38ab981846e127645 (patch)
treea04a7a70f4a15d153f8b737226ae7b942e07b052
parent5d033fbd0aed96770bd6802dbece6df1a5c8540e (diff)
downloadspack-935eba23579af1d64e56fea38ab981846e127645.tar.gz
spack-935eba23579af1d64e56fea38ab981846e127645.tar.bz2
spack-935eba23579af1d64e56fea38ab981846e127645.tar.xz
spack-935eba23579af1d64e56fea38ab981846e127645.zip
Allow commands to return error codes.
-rwxr-xr-xbin/spack10
-rw-r--r--lib/spack/spack/cmd/graph.py5
-rw-r--r--lib/spack/spack/cmd/md5.py1
3 files changed, 15 insertions, 1 deletions
diff --git a/bin/spack b/bin/spack
index b345a5079d..626d9d9d11 100755
--- a/bin/spack
+++ b/bin/spack
@@ -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))
diff --git a/lib/spack/spack/cmd/graph.py b/lib/spack/spack/cmd/graph.py
index f8cd18d91f..cb93a1b543 100644
--- a/lib/spack/spack/cmd/graph.py
+++ b/lib/spack/spack/cmd/graph.py
@@ -31,6 +31,8 @@ from spack.graph import *
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)
diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py
index 496835c64b..dfa1be412b 100644
--- a/lib/spack/spack/cmd/md5.py
+++ b/lib/spack/spack/cmd/md5.py
@@ -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):