Skip to content

Commit

Permalink
Merge pull request #107 from davidhyman/config-project-name
Browse files Browse the repository at this point in the history
make project name configurable from cli
  • Loading branch information
hawkowl committed Apr 5, 2018
2 parents 44558c2 + f831752 commit a57a5d3
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 7 deletions.
28 changes: 21 additions & 7 deletions src/towncrier/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,29 @@ def _get_date():
help=("Render the news fragments, don't write to files, "
"don't check versions."))
@click.option('--dir', 'directory', default='.')
@click.option('--name', 'project_name', default=None)
@click.option('--version', 'project_version', default=None,
help="Render the news fragments using given version.")
@click.option('--date', 'project_date', default=None)
@click.option('--yes', 'answer_yes', default=False, flag_value=True,
help="Do not ask for confirmation to remove news fragments.")
def _main(draft, directory, project_version, project_date, answer_yes):
return __main(draft, directory, project_version, project_date, answer_yes)
def _main(
draft, directory,
project_name, project_version, project_date,
answer_yes
):
return __main(
draft, directory,
project_name, project_version, project_date,
answer_yes
)


def __main(draft, directory, project_version, project_date, answer_yes):
def __main(
draft, directory,
project_name, project_version, project_date,
answer_yes
):
"""
The main entry point.
"""
Expand Down Expand Up @@ -79,14 +92,15 @@ def __main(draft, directory, project_version, project_date, answer_yes):
template, config['issue_format'], fragments, definitions,
config['underlines'][1:])

if not project_version:
if project_version is None:
project_version = get_version(
os.path.abspath(os.path.join(directory, config['package_dir'])),
config['package'])

project_name = get_project_name(
os.path.abspath(os.path.join(directory, config['package_dir'])),
config['package'])
if project_name is None:
project_name = get_project_name(
os.path.abspath(os.path.join(directory, config['package_dir'])),
config['package'])

if project_date is None:
project_date = _get_date()
Expand Down
52 changes: 52 additions & 0 deletions src/towncrier/test/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,3 +232,55 @@ def test_no_confirmation(self):
self.assertTrue(os.path.isfile(path))
self.assertFalse(os.path.isfile(fragment_path1))
self.assertFalse(os.path.isfile(fragment_path2))

def test_projectless_changelog(self):
"""In which a directory containing news files is built into a changelog
- without a Python project or version number. We override the
project title from the commandline.
"""
runner = CliRunner()

with runner.isolated_filesystem():
with open('pyproject.toml', 'w') as f:
f.write(
'[tool.towncrier]\n'
'package = "foo"\n'
)
os.mkdir('foo')
os.mkdir('foo/newsfragments')
with open('foo/newsfragments/123.feature', 'w') as f:
f.write('Adds levitation')
# Towncrier ignores .rst extension
with open('foo/newsfragments/124.feature.rst', 'w') as f:
f.write('Extends levitation')

result = runner.invoke(_main, [
'--name', 'FooBarBaz',
'--version', '7.8.9',
'--date', '01-01-2001',
'--draft',
])

self.assertEqual(0, result.exit_code)
self.assertEqual(
result.output,
dedent("""
Loading template...
Finding news fragments...
Rendering news fragments...
Draft only -- nothing has been written.
What is seen below is what would be written.
FooBarBaz 7.8.9 (01-01-2001)
============================
Features
--------
- Adds levitation (#123)
- Extends levitation (#124)
""").lstrip()
)

0 comments on commit a57a5d3

Please sign in to comment.