Skip to main content

Convert any git repo into a cookiecutter projects template.

Project description

https://github.com/MacHu-GWU/cookiecutter_maker-project/workflows/CI/badge.svg https://codecov.io/gh/MacHu-GWU/cookiecutter_maker-project/branch/main/graph/badge.svg https://img.shields.io/pypi/v/cookiecutter_maker.svg https://img.shields.io/pypi/l/cookiecutter_maker.svg https://img.shields.io/pypi/pyversions/cookiecutter_maker.svg https://img.shields.io/badge/STAR_Me_on_GitHub!--None.svg?style=social
https://img.shields.io/badge/Link-Install-blue.svg https://img.shields.io/badge/Link-GitHub-blue.svg https://img.shields.io/badge/Link-Submit_Issue-blue.svg https://img.shields.io/badge/Link-Request_Feature-blue.svg https://img.shields.io/badge/Link-Download-blue.svg

Welcome to cookiecutter_maker Documentation

Summary

Python Cookiecutter is an awesome library that can create projects from templates. In an enterprise setting, people typically start with a concrete, working project and then convert it into a template that serves as the internal standard for future use (Template -> Project).

📋 Cookiecutter Maker is the inverse of cookiecutter (Project -> Template). It is a Python open source tool that can convert any given folder structure into a cookiecutter project.

Usage Example

Run the following python script to convert your concrete project into a template project:

from cookiecutter_maker.api import Maker

maker = Maker.new(
    # the input concrete project directory
    input_dir="/path-to-input-dir/my_awesome_project",
    # the output template project directory
    output_dir="/path-to-output-dir",
    # define the ``string to replace``, ``parameter name`` and ``default parameter value``
    mapper=[
        ("my_awesome_project", "package_name", "default_package_name"),
    ],
    # define what to include in the input directory
    # it is the relative path from the input directory
    # the rule is 'explicit exclude' > 'explicit include' > 'default include'
    # if empty, then include all files and directories
    include=[],
    # define what to exclude in the input directory
    # it is the relative path from the input directory
    exclude=[
        # dir
        ".venv",
        ".pytest_cache",
        ".git",
        ".idea",
        "build",
        "dist",
        "htmlcov",
        # file
        ".coverage",
    ],
    # define what to copy as it is without rending
    # usually you should ignore jinja template files
    no_render=[
        "*.tpl",
    ],
    # over write the output location if already exists
    overwrite=True,
    # mapper could have one key is substring of another key
    # if this is True, it will ignore the error
    ignore_mapper_error=False,
    # when mapper could have one key is substring of another key
    # it will prompt you to confirm to continue
    skip_mapper_prompt=True,
    # do you want to print debug information?
    debug=True,
)
maker.templaterize()

In this example, it will create a directory {{ cookiecutter.package_name }} and a json file cookiecutter.json. Now you can follow the cookiecutter instruction to generate more concrete projects.

Install

cookiecutter_maker is released on PyPI, so all you need is:

$ pip install cookiecutter_maker

To upgrade to latest version:

$ pip install --upgrade cookiecutter_maker

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cookiecutter_maker-0.3.1.tar.gz (13.3 kB view hashes)

Uploaded Source

Built Distribution

cookiecutter_maker-0.3.1-py2.py3-none-any.whl (9.3 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page