diff --git a/manageprojects/__init__.py b/manageprojects/__init__.py index c89d1ac..aaf2e85 100644 --- a/manageprojects/__init__.py +++ b/manageprojects/__init__.py @@ -3,5 +3,5 @@ Manage Python / Django projects """ -__version__ = '0.9.7' +__version__ = '0.9.8' __author__ = 'Jens Diemer ' diff --git a/manageprojects/cli/cli_app.py b/manageprojects/cli/cli_app.py index f7421e6..6748cf4 100644 --- a/manageprojects/cli/cli_app.py +++ b/manageprojects/cli/cli_app.py @@ -368,9 +368,15 @@ def clone_project( @click.command() @click.argument('project_path', **ARGUMENT_EXISTING_DIR) @click.argument('destination', **ARGUMENT_NOT_EXISTING_DIR) +@click.option( + '--overwrite/--no-overwrite', + **OPTION_ARGS_DEFAULT_FALSE, + help='Overwrite existing files.', +) def reverse( project_path: Path, destination: Path, + overwrite: bool, ): """ Create a cookiecutter template from a managed project. @@ -383,6 +389,7 @@ def reverse( return reverse_managed_project( project_path=project_path, destination=destination, + overwrite=overwrite, ) diff --git a/manageprojects/cookiecutter_generator.py b/manageprojects/cookiecutter_generator.py index 69df14f..576796b 100644 --- a/manageprojects/cookiecutter_generator.py +++ b/manageprojects/cookiecutter_generator.py @@ -66,10 +66,12 @@ def create_cookiecutter_template( source_path: Path, destination: Path, cookiecutter_context: dict, + overwrite: bool = False, ): source_path = source_path.resolve() assert_is_dir(source_path) - assert not destination.exists(), f'Destination {destination} already exists!' + if not overwrite: + assert not destination.exists(), f'Destination {destination} already exists!' reverse_info = generate_reverse_info(cookiecutter_context=cookiecutter_context) diff --git a/manageprojects/cookiecutter_templates.py b/manageprojects/cookiecutter_templates.py index b78a8d0..28994c8 100644 --- a/manageprojects/cookiecutter_templates.py +++ b/manageprojects/cookiecutter_templates.py @@ -254,12 +254,13 @@ def reverse_managed_project( *, project_path: Path, destination: Path, + overwrite: bool = False, ): """ Create a cookiecutter template from a managed project. """ rprint(f'Create cookiecutter template from {project_path} in {destination}') - if destination.exists(): + if not overwrite and destination.exists(): print(f'ERROR: Destination {destination} already exists!') sys.exit(1) @@ -273,4 +274,5 @@ def reverse_managed_project( source_path=project_path, destination=destination, cookiecutter_context=cookiecutter_context, + overwrite=overwrite, )