summaryrefslogtreecommitdiff
path: root/lib/spack/spack/cmd/create.py
diff options
context:
space:
mode:
authorMatthew LeGendre <legendre1@llnl.gov>2015-04-20 10:38:18 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2015-08-16 12:48:32 -0700
commitc7b8d09c7f180da5922801450fe0ae6a0f802377 (patch)
treed44ddeabd11632b74210a0fa672826a9e66394c5 /lib/spack/spack/cmd/create.py
parentc8f65c15306683a5d505d4bcafa603e75c09feca (diff)
downloadspack-c7b8d09c7f180da5922801450fe0ae6a0f802377.tar.gz
spack-c7b8d09c7f180da5922801450fe0ae6a0f802377.tar.bz2
spack-c7b8d09c7f180da5922801450fe0ae6a0f802377.tar.xz
spack-c7b8d09c7f180da5922801450fe0ae6a0f802377.zip
Add packagerepos to spack, allowing for creating multiple package repositories.
Diffstat (limited to 'lib/spack/spack/cmd/create.py')
-rw-r--r--lib/spack/spack/cmd/create.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py
index 46e6bcec14..1502942f2c 100644
--- a/lib/spack/spack/cmd/create.py
+++ b/lib/spack/spack/cmd/create.py
@@ -94,6 +94,9 @@ def setup_parser(subparser):
'-n', '--name', dest='alternate_name', default=None,
help="Override the autodetected name for the created package.")
subparser.add_argument(
+ '-p', '--package-repo', dest='package_repo', default=None,
+ help="Create the package in the specified packagerepo.")
+ subparser.add_argument(
'-f', '--force', action='store_true', dest='force',
help="Overwrite any existing package file with the same name.")
@@ -160,12 +163,21 @@ def create(parser, args):
tty.die("Couldn't guess a name for this package. Try running:", "",
"spack create --name <name> <url>")
+ package_repo = args.package_repo
+
if not valid_module_name(name):
tty.die("Package name can only contain A-Z, a-z, 0-9, '_' and '-'")
tty.msg("This looks like a URL for %s version %s." % (name, version))
tty.msg("Creating template for package %s" % name)
+ # Create a directory for the new package.
+ pkg_path = spack.db.filename_for_package_name(name, package_repo)
+ if os.path.exists(pkg_path) and not args.force:
+ tty.die("%s already exists." % pkg_path)
+ else:
+ mkdirp(os.path.dirname(pkg_path))
+
versions = spack.package.find_versions_of_archive(url)
rkeys = sorted(versions.keys(), reverse=True)
versions = OrderedDict(zip(rkeys, (versions[v] for v in rkeys)))