Source code for cookiecutter_python.cli

"""Main `cookiecutter_python` CLI."""

import os
import sys

import click

from cookiecutter_python import __version__
from .backend import generate
from .cli_handlers import handle_error
from .exceptions import exceptions

this_file_location = os.path.dirname(os.path.realpath(os.path.abspath(__file__)))


[docs]def version_msg(): """Message about Python Generator version, location and Python version.""" python_version = sys.version[:3] message = u'Python Generator %(version)s from {} (Python {})' location = os.path.dirname(this_file_location) return message.format(location, python_version)
@click.command(context_settings=dict(help_option_names=[u'-h', u'--help'])) @click.version_option(__version__, u'-V', u'--version', message=version_msg()) @click.option( u'--no-input', is_flag=True, help=u'Do not prompt for parameters and only use cookiecutter.json ' u'file content', ) @click.option( u'--offline', is_flag=True, help=u'Disable Async Http Project Existence Check, on PyPI and RTD servers', ) @click.option( u'-c', u'--checkout', help=u'branch, tag or commit to checkout after git clone', ) @click.option( u'--directory', help=u'Directory within repo that holds cookiecutter.json file ' u'for advanced repositories with multi templates in it', ) @click.option( u'--replay', is_flag=True, help=u'Do not prompt for parameters and only use information entered ' u'previously', ) @click.option( u'-f', u'--overwrite', is_flag=True, help=u'Overwrite the contents of the output directory if it already exists', ) @click.option( u'-s', u'--skip-if-file-exists', is_flag=True, help=u'Skip the files in the corresponding directories if they already ' u'exist', default=False, ) @click.option( u'-o', u'--output-dir', default='.', type=click.Path(), help=u'Where to output the generated project dir into', ) @click.option( u'--config-file', type=click.Path(), default=None, help=u'User configuration file' ) @click.option( u'--default-config', is_flag=True, help=u'Do not load a config file. Use the defaults instead', ) def main( no_input, offline: bool, checkout, replay, overwrite, output_dir, config_file, default_config, directory, skip_if_file_exists, ): """Create a Project from the project template. Cookiecutter Python Package is Free/Libre Open Source Software. If you would like to get in touch, please see https://github.com/boromir674/cookiecutter-python-package. """ # TODO Improvement: add logging configuration try: project: str = generate( checkout=checkout, offline=offline, no_input=no_input, replay=replay, overwrite=overwrite, output_dir=output_dir, config_file=config_file, default_config=default_config, password=None, # os.environ.get('COOKIECUTTER_REPO_PASSWORD'), directory=directory, skip_if_file_exists=skip_if_file_exists, ) except exceptions['critical'] as error: handle_error(error) sys.exit(1) except exceptions['non-critical'] as error: handle_error(error) return project if __name__ == "__main__": # pragma: no cover main()