summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgoodwillcoding <goodwillcoding@webhippo.net>2016-10-02 18:12:32 -0700
committergoodwillcoding <goodwillcoding@webhippo.net>2016-10-02 18:12:32 -0700
commit24c63558d04dc9ad2a1ee2243a63ace0d355ffe5 (patch)
tree87201647fc414c2a946b58ec08a1dce242c048c2
parent2058b2e25cf261505efeb75db6ca49bc2749d3cf (diff)
downloadpyramid-24c63558d04dc9ad2a1ee2243a63ace0d355ffe5.tar.gz
pyramid-24c63558d04dc9ad2a1ee2243a63ace0d355ffe5.tar.bz2
pyramid-24c63558d04dc9ad2a1ee2243a63ace0d355ffe5.zip
Add --package-name option to pcreate. This solves the problem
of scaffold creating an existing directory where the package created should not be named after the base folder. For example if I am in I run pcreate in ~/code/trypyramid.com and would like to create package called tpc this is currently impossible. This solves the issues by allowing me to specify the package name on the command line
-rw-r--r--pyramid/scripts/pcreate.py17
-rw-r--r--pyramid/tests/test_scripts/test_pcreate.py21
2 files changed, 35 insertions, 3 deletions
diff --git a/pyramid/scripts/pcreate.py b/pyramid/scripts/pcreate.py
index f3121a915..7da501c49 100644
--- a/pyramid/scripts/pcreate.py
+++ b/pyramid/scripts/pcreate.py
@@ -45,6 +45,13 @@ class PCreateCommand(object):
action='store_true',
help=("A backwards compatibility alias for -l/--list. "
"List all available scaffold names."))
+ parser.add_option('--package-name',
+ dest='package_name',
+ action='store',
+ type='string',
+ help='Package name to use. Has to be a valid python '
+ 'package name. (By default package name is derived '
+ 'from output_directory base folder name)')
parser.add_option('--simulate',
dest='simulate',
action='store_true',
@@ -99,9 +106,13 @@ class PCreateCommand(object):
def project_vars(self):
output_dir = self.output_path
project_name = os.path.basename(os.path.split(output_dir)[1])
- pkg_name = _bad_chars_re.sub(
- '', project_name.lower().replace('-', '_'))
- safe_name = pkg_resources.safe_name(project_name)
+ if self.options.package_name is None:
+ pkg_name = _bad_chars_re.sub(
+ '', project_name.lower().replace('-', '_'))
+ safe_name = pkg_resources.safe_name(project_name)
+ else:
+ pkg_name = self.options.package_name
+ safe_name = pkg_name
egg_name = pkg_resources.to_filename(safe_name)
# get pyramid package version
diff --git a/pyramid/tests/test_scripts/test_pcreate.py b/pyramid/tests/test_scripts/test_pcreate.py
index eaa7c1464..b7013bc73 100644
--- a/pyramid/tests/test_scripts/test_pcreate.py
+++ b/pyramid/tests/test_scripts/test_pcreate.py
@@ -80,6 +80,27 @@ class TestPCreateCommand(unittest.TestCase):
{'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
'pyramid_version': '0.1', 'pyramid_docs_branch':'0.1-branch'})
+ def test_scaffold_with_package_name(self):
+ import os
+ cmd = self._makeOne('-s', 'dummy', '--package-name', 'dummy_package',
+ 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.1")
+ result = cmd.run()
+
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), 'Distro'))
+ )
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'dummy_package',
+ 'package': 'dummy_package', 'pyramid_version': '0.1',
+ 'pyramid_docs_branch':'0.1-branch'})
+
+
def test_scaffold_with_hyphen_in_project_name(self):
import os
cmd = self._makeOne('-s', 'dummy', 'Distro-')