Source code for optimus.interfaces.starter

# -*- coding: utf-8 -*-
import logging

from cookiecutter.main import cookiecutter
from cookiecutter.exceptions import RepositoryNotFound


[docs]def starter_interface(template, project_name, output_dir): """ Interface to create a new Optimus project from a cookiecutter template. Be aware that cookiecutter emit a lot of logs, you may want to mute them. Raises: exceptions: Any possible exceptions from cookiecutter. Arguments: template (string): Path to a template directory or an URL to a public template repository. project_name (string): Project name. It would be used to make the project directory name. output_dir (string): Path where the project directory will be created. Return: string: Path where the project has been created. """ logger = logging.getLogger("optimus") logger.debug("Project name: {}".format(project_name)) logger.debug("Destination: {}".format(output_dir)) try: # Just create project, disable input and just configure it from given context created = cookiecutter( template, extra_context={ "project_name": project_name, }, no_input=True, output_dir=output_dir, ) # NOTE: This is actually the only exception from cookiecutter catched to emit a # critical log, however it got some others than may be raised. Eventually we will # catch a little more or catch cookiecutter base exception. except RepositoryNotFound as e: logger.critical(str(e)) raise e logger.info("Created project to: {}".format(created)) return created