diff --git a/certidude/cli.py b/certidude/cli.py index 07d5899..f9c41e9 100755 --- a/certidude/cli.py +++ b/certidude/cli.py @@ -469,7 +469,10 @@ def certidude_setup_authority(parent, country, state, locality, organization, or if not re.match(r"^[_a-zA-Z0-9]+$", slug): raise click.ClickException("CA name can contain only alphanumeric and '_' characters") - click.echo("CA configuration files are saved to: {}".format(os.path.abspath(slug))) + if os.path.lexists(directory): + raise click.ClickException("Output directory {} already exists.".format(directory)) + + click.echo("CA configuration files are saved to: {}".format(directory)) click.echo("Generating 4096-bit RSA key...") diff --git a/tests/test_cli.py b/tests/test_cli.py index bc74ea1..6037fa2 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -41,3 +41,11 @@ def test_cli_setup_authority_invalid_name(): result = runner.invoke(cli, ['setup', 'authority', '""']) assert result.exception + +def test_cli_setup_authority_overwrite(): + with runner.isolated_filesystem(): + result = runner.invoke(cli, ['setup', 'authority', 'foo']) + assert not result.exception + + result = runner.invoke(cli, ['setup', 'authority', 'foo']) + assert result.exception