Skip to content

Commit

Permalink
Support list or string for default_command config
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex David committed Apr 19, 2020
1 parent 5bf12b6 commit f91777c
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 24 deletions.
21 changes: 8 additions & 13 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -847,28 +847,23 @@ def test_status_filtering(runner, todo_factory):
assert 'two' in result.output


def test_invoke_command(runner, tmpdir):
def test_default_command_string(runner, tmpdir):
path = tmpdir.join('config')
path.write('default_command = flush\n', 'a')

flush = mock.MagicMock()
with patch.dict(cli.commands, values=dict(flush=flush)):
result = runner.invoke(cli, catch_exceptions=False)

assert not result.exception
assert not result.output.strip()
assert flush.call_count == 1
result = runner.invoke(cli, catch_exceptions=False)
assert (
'Are you sure you want to delete all done tasks?' in result.output
)


def test_invoke_invalid_command(runner, tmpdir):
def test_default_command_list(runner, tmpdir):
path = tmpdir.join('config')
path.write('default_command = DoTheRobot\n', 'a')
path.write('default_command = show, 1234\n', 'a')

result = runner.invoke(cli, catch_exceptions=False)

assert result.exception
assert (
'Error: Invalid setting for [main][default_command]' in result.output
'No todo with id 1234.' in result.output
)


Expand Down
16 changes: 5 additions & 11 deletions todoman/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,19 +307,13 @@ def cli(click_ctx, colour, porcelain, humanize, config):
locale.setlocale(locale.LC_TIME, "")

if not click_ctx.invoked_subcommand:
invoke_command(
click_ctx,
ctx.config['main']['default_command'],
)
invoke_command(ctx.config['main']['default_command'])


def invoke_command(click_ctx, command):
name, *args = command.split(' ')
if name not in cli.commands:
raise click.ClickException(
'Invalid setting for [main][default_command]'
)
click_ctx.invoke(cli.commands[command], args)
def invoke_command(argv):
if not isinstance(argv, type([])):
argv = [argv]
cli.main(argv)


try: # pragma: no cover
Expand Down

0 comments on commit f91777c

Please sign in to comment.