Skip to content

Commit 4763058

Browse files
committed
Make init interactive.
1 parent 4e07f9c commit 4763058

File tree

3 files changed

+21
-17
lines changed

3 files changed

+21
-17
lines changed

hatch/commands/init.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
@click.command(context_settings=CONTEXT_SETTINGS,
1616
short_help='Creates a new Python project in the current directory')
17-
@click.argument('name')
1817
@click.option('-ne', '--no-env', is_flag=True,
1918
help=(
2019
'Disables the creation of a dedicated virtual env.'
@@ -43,9 +42,7 @@
4342
'within. Also, a `__main__.py` is created so it can be '
4443
'invoked via `python -m pkg_name`.'
4544
))
46-
@click.option('-l', '--licenses',
47-
help='Comma-separated list of licenses to use.')
48-
def init(name, no_env, pyname, pypath, env_name, basic, cli, licenses):
45+
def init(no_env, pyname, pypath, env_name, basic, cli):
4946
"""Creates a new Python project in the current directory.
5047
5148
Values from your config file such as `name` and `pyversions` will be used
@@ -87,17 +84,23 @@ def init(name, no_env, pyname, pypath, env_name, basic, cli, licenses):
8784
'The default project structure will be used.'
8885
)
8986

87+
cwd = os.getcwd()
88+
pname = os.path.split(cwd)[-1]
89+
settings['package_name'] = click.prompt('project name', default=pname)
90+
settings['version'] = click.prompt('version', default='1.0.0')
91+
settings['description'] = click.prompt('description', default='')
92+
settings['author'] = click.prompt('author', default='')
93+
settings['email'] = click.prompt('author_email', default='')
94+
licenses = click.prompt('license', default='mit')
95+
settings['licenses'] = map(str.strip, licenses.split(','))
96+
9097
if basic:
9198
settings['basic'] = True
9299

93-
if licenses:
94-
settings['licenses'] = licenses.split(',')
95-
96100
settings['cli'] = cli
97101

98-
d = os.getcwd()
99-
create_package(d, name, settings)
100-
echo_success('Created project `{}` here'.format(name))
102+
create_package(cwd, settings)
103+
echo_success('Created project `{}` here'.format(settings['package_name']))
101104

102105
venvs = env_name.split('/') if env_name else []
103106
if (venvs or not no_env) and pyname:
@@ -113,7 +116,7 @@ def init(name, no_env, pyname, pypath, env_name, basic, cli, licenses):
113116
sys.exit(1)
114117

115118
if not no_env:
116-
venv_dir = os.path.join(d, 'venv')
119+
venv_dir = os.path.join(cwd, 'venv')
117120
echo_waiting('Creating its own virtual env... ', nl=False)
118121
create_venv(venv_dir, pypath=pypath)
119122
echo_success('complete!')

hatch/create.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@
3535
}
3636

3737

38-
def create_package(d, package_name, settings):
38+
def create_package(d, settings):
39+
package_name = settings['package_name']
3940
normalized_package_name = normalize_package_name(package_name)
4041
cli = settings.get('cli')
4142
basic = settings.get('basic', DEFAULT_SETTINGS['basic'])
4243
extra_files = []
4344

44-
name = settings.get('name') or DEFAULT_SETTINGS['name']
45+
author = settings.get('author') or DEFAULT_SETTINGS['author']
4546
version = settings.get('version') or '1.0.0'
4647
email = settings.get('email') or DEFAULT_SETTINGS['email']
4748
pyversions = sorted(
@@ -57,7 +58,7 @@ def create_package(d, package_name, settings):
5758
)
5859

5960
licenses = [
60-
LICENSES[li](name)
61+
LICENSES[li](author)
6162
for li in settings.get('licenses') or DEFAULT_SETTINGS['licenses']
6263
]
6364

@@ -82,10 +83,10 @@ def create_package(d, package_name, settings):
8283
)
8384

8485
setup_py = SetupFile(
85-
name, email, package_name, pyversions, licenses,
86+
author, email, package_name, pyversions, licenses,
8687
readme, package_url, cli
8788
)
88-
projectfile = ProjectFile(package_name, version, name, email, pyversions,
89+
projectfile = ProjectFile(package_name, version, author, email, pyversions,
8990
licenses, package_url)
9091

9192
coverage_service = settings.get('coverage') if not basic else None

hatch/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
('build', ''),
2020
])),
2121
('pypi_username', ''),
22-
('name', 'U.N. Owen'),
22+
('author', 'U.N. Owen'),
2323
('email', '[email protected]'),
2424
('basic', True),
2525
('pyversions', ['2.7', '3.5', '3.6', 'pypy', 'pypy3']),

0 commit comments

Comments
 (0)