diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/spack | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/bin/spack b/bin/spack new file mode 100755 index 0000000000..1fd47d5e8c --- /dev/null +++ b/bin/spack @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +import os +import sys +import argparse + +# Find spack's location and its prefix. +SPACK_FILE = os.environ["SPACK_FILE"] = os.path.expanduser(__file__) +SPACK_PREFIX = os.path.dirname(os.path.dirname(SPACK_FILE)) + +# Allow spack libs to be imported in our scripts +SPACK_LIB_PATH = os.path.join(SPACK_PREFIX, "lib", "spack") +sys.path.insert(0, SPACK_LIB_PATH) + +# clean up the scope and start using spack package instead. +del SPACK_FILE, SPACK_PREFIX, SPACK_LIB_PATH +import spack + +# Command parsing +parser = argparse.ArgumentParser( + description='Spack: the Supercomputing PACKage Manager.') +parser.add_argument('-V', '--version', action='version', version="%s" % spack.version) +parser.add_argument('-v', '--verbose', action='store_true', dest='verbose') + +# each command module implements a parser() function, to which we pass its +# subparser for setup. +subparsers = parser.add_subparsers(title="subcommands", dest="command") + +import spack.cmd +for cmd in spack.cmd.commands: + subparser = subparsers.add_parser(cmd) + module = spack.cmd.get_module(cmd) + module.setup_parser(subparser) +args = parser.parse_args() + +# Set up environment based on args. +spack.verbose = args.verbose + +# Try to load the particular command asked for and run it +command = spack.cmd.get_command(args.command) +command(args) |