cookie-composer


Namecookie-composer JSON
Version 0.13.1 PyPI version JSON
download
home_pageNone
SummaryCreate new projects from a composition of several templates
upload_time2024-05-05 13:54:00
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseBSD-3-Clause
keywords cookie-composer cookiecutter scaffold
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Cookie Composer

<!-- start-badges -->

[![PyPI](https://img.shields.io/pypi/v/cookie-composer)][pypi_]
[![Status](https://img.shields.io/pypi/status/cookie-composer)][status]
[![Python Version](https://img.shields.io/pypi/pyversions/cookie-composer)][python version]
[![License](https://img.shields.io/pypi/l/cookie-composer)][license]
[![codecov](https://codecov.io/gh/callowayproject/cookie-composer/branch/master/graph/badge.svg?token=YO2JQLV1OB)](https://codecov.io/gh/callowayproject/cookie-composer)

[pypi_]: https://pypi.org/project/cookie-composer/
[status]: https://pypi.org/project/cookie-composer/
[python version]: https://pypi.org/project/cookie-composer
[license]: https://github.com/callowayproject/cookie-composer/blob/master/LICENSE

Documentation: https://callowayproject.github.io/cookie-composer/

<!-- end-badges -->

Cookie composer builds on the [cookie cutter](https://github.com/cookiecutter/cookiecutter) project to generate projects based on one or more cookiecutter templates.

## Goals

- Create new projects from a composition of several templates
- Add new capabilities to an existing repository by applying a template
- Apply template updates to the generated project

## Introduction

Cookie Cutter treats templates like sandwiches. There are templates for hamburgers, clubs, and any other kind of sandwich you can dream up. You might have options and defaults on a template, like `Hold the mustard?[False]:` or `Mustard type [dijon]:`, but those are decided by the template author. 


<img src="https://raw.githubusercontent.com/coordt/cookie-composer/master/docsrc/_static/img/sandwiches.png" alt="Templates are treated like finished sandwiches" style="zoom:50%;" />

If you look closely at the sandwiches (templates), there is usually many things in common. What if we treated the templates as compositions of other templates:

<img src="https://raw.githubusercontent.com/coordt/cookie-composer/master/docsrc/_static/img/compositions.png" alt="Sandwiches as a composition of layers" style="zoom:50%;" />

You now can manage several smaller and specialized templates that provide functionality. Each template's options will be specific to what that template needs.

<img src="https://raw.githubusercontent.com/coordt/cookie-composer/master/docsrc/_static/img/layers.png" alt="Templates broken out as layers on a sandwich" style="zoom:50%;" />

Cookie Composer uses a composition file to describe the layers required, and even override a template's default answers.

```yaml
template: bottom-bun
context:
  toasting_level: light
  buttered: False
---
template: burger
---
template: cheese
context:
  kind: swiss
---
template: bacon
context:
  cooking_level: crispy
---
template: ketchup
---
template: mustard
context:
  type: yellow
---
template: top-bun
context:
  toasting_level: light
  buttered: False
```

We have created [a repo of highly composable templates](https://github.com/coordt/cookiecomposer-templates) as examples or reference. However, Cookie Composer is designed to handle any Cookie Cutter template.

## Purpose

- Separate out parts to a repo into composable templates
  - Boilerplate
    - README, CONTRIBUTING, docs, Makefile, license, tooling configurations
  - Project-specific
    - Django
    - Flask
    - Library
    - Data science
  - CI/CD specific
    - Helm chart
    - GitHub Actions vs. Jenkins vs. ...
  - Documentation specific
    - Sphinx
    - MkDocs
- Each composable template is managed and updated individually
- A project can update itself based on chages in layers


## Please contribute

- Documentation critiques
- Documentation suggestions
- Feature suggestions
- Feature improvements
- Edge case identification
- Code improvements

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "cookie-composer",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "cookie-composer, cookiecutter, scaffold",
    "author": null,
    "author_email": "Corey Oordt <coreyoordt@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/e0/93/126df2008d5f9d8e45c40290525b23a057470a5eac853fad940785bfd061/cookie_composer-0.13.1.tar.gz",
    "platform": null,
    "description": "# Cookie Composer\n\n<!-- start-badges -->\n\n[![PyPI](https://img.shields.io/pypi/v/cookie-composer)][pypi_]\n[![Status](https://img.shields.io/pypi/status/cookie-composer)][status]\n[![Python Version](https://img.shields.io/pypi/pyversions/cookie-composer)][python version]\n[![License](https://img.shields.io/pypi/l/cookie-composer)][license]\n[![codecov](https://codecov.io/gh/callowayproject/cookie-composer/branch/master/graph/badge.svg?token=YO2JQLV1OB)](https://codecov.io/gh/callowayproject/cookie-composer)\n\n[pypi_]: https://pypi.org/project/cookie-composer/\n[status]: https://pypi.org/project/cookie-composer/\n[python version]: https://pypi.org/project/cookie-composer\n[license]: https://github.com/callowayproject/cookie-composer/blob/master/LICENSE\n\nDocumentation: https://callowayproject.github.io/cookie-composer/\n\n<!-- end-badges -->\n\nCookie composer builds on the [cookie cutter](https://github.com/cookiecutter/cookiecutter) project to generate projects based on one or more cookiecutter templates.\n\n## Goals\n\n- Create new projects from a composition of several templates\n- Add new capabilities to an existing repository by applying a template\n- Apply template updates to the generated project\n\n## Introduction\n\nCookie Cutter treats templates like sandwiches. There are templates for hamburgers, clubs, and any other kind of sandwich you can dream up. You might have options and defaults on a template, like `Hold the mustard?[False]:` or `Mustard type [dijon]:`, but those are decided by the template author. \n\n\n<img src=\"https://raw.githubusercontent.com/coordt/cookie-composer/master/docsrc/_static/img/sandwiches.png\" alt=\"Templates are treated like finished sandwiches\" style=\"zoom:50%;\" />\n\nIf you look closely at the sandwiches (templates), there is usually many things in common. What if we treated the templates as compositions of other templates:\n\n<img src=\"https://raw.githubusercontent.com/coordt/cookie-composer/master/docsrc/_static/img/compositions.png\" alt=\"Sandwiches as a composition of layers\" style=\"zoom:50%;\" />\n\nYou now can manage several smaller and specialized templates that provide functionality. Each template's options will be specific to what that template needs.\n\n<img src=\"https://raw.githubusercontent.com/coordt/cookie-composer/master/docsrc/_static/img/layers.png\" alt=\"Templates broken out as layers on a sandwich\" style=\"zoom:50%;\" />\n\nCookie Composer uses a composition file to describe the layers required, and even override a template's default answers.\n\n```yaml\ntemplate: bottom-bun\ncontext:\n  toasting_level: light\n  buttered: False\n---\ntemplate: burger\n---\ntemplate: cheese\ncontext:\n  kind: swiss\n---\ntemplate: bacon\ncontext:\n  cooking_level: crispy\n---\ntemplate: ketchup\n---\ntemplate: mustard\ncontext:\n  type: yellow\n---\ntemplate: top-bun\ncontext:\n  toasting_level: light\n  buttered: False\n```\n\nWe have created [a repo of highly composable templates](https://github.com/coordt/cookiecomposer-templates) as examples or reference. However, Cookie Composer is designed to handle any Cookie Cutter template.\n\n## Purpose\n\n- Separate out parts to a repo into composable templates\n  - Boilerplate\n    - README, CONTRIBUTING, docs, Makefile, license, tooling configurations\n  - Project-specific\n    - Django\n    - Flask\n    - Library\n    - Data science\n  - CI/CD specific\n    - Helm chart\n    - GitHub Actions vs. Jenkins vs. ...\n  - Documentation specific\n    - Sphinx\n    - MkDocs\n- Each composable template is managed and updated individually\n- A project can update itself based on chages in layers\n\n\n## Please contribute\n\n- Documentation critiques\n- Documentation suggestions\n- Feature suggestions\n- Feature improvements\n- Edge case identification\n- Code improvements\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "Create new projects from a composition of several templates",
    "version": "0.13.1",
    "project_urls": {
        "Documentation": "https://callowayproject.github.io/cookie-composer/",
        "Homepage": "https://github.com/callowayproject/cookie-composer"
    },
    "split_keywords": [
        "cookie-composer",
        " cookiecutter",
        " scaffold"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ac122011215eb294fe558e832a107ff0d58e6d21bd511b7b755f5faa33f2ad08",
                "md5": "dc70980a033a26c6b16a3cc7d7e25816",
                "sha256": "fee4767e093ffbd343b021762316a7630e49f721d8f1c77d51385c44c620676c"
            },
            "downloads": -1,
            "filename": "cookie_composer-0.13.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "dc70980a033a26c6b16a3cc7d7e25816",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 45593,
            "upload_time": "2024-05-05T13:53:58",
            "upload_time_iso_8601": "2024-05-05T13:53:58.961788Z",
            "url": "https://files.pythonhosted.org/packages/ac/12/2011215eb294fe558e832a107ff0d58e6d21bd511b7b755f5faa33f2ad08/cookie_composer-0.13.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e093126df2008d5f9d8e45c40290525b23a057470a5eac853fad940785bfd061",
                "md5": "2529a78d28bd76128c0a80c9354e3b69",
                "sha256": "993005e3466c28f1e2ca0e56d6c4807b9e78d663b216d29722bae50ea90e92ca"
            },
            "downloads": -1,
            "filename": "cookie_composer-0.13.1.tar.gz",
            "has_sig": false,
            "md5_digest": "2529a78d28bd76128c0a80c9354e3b69",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 75890,
            "upload_time": "2024-05-05T13:54:00",
            "upload_time_iso_8601": "2024-05-05T13:54:00.251666Z",
            "url": "https://files.pythonhosted.org/packages/e0/93/126df2008d5f9d8e45c40290525b23a057470a5eac853fad940785bfd061/cookie_composer-0.13.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-05 13:54:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "callowayproject",
    "github_project": "cookie-composer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "cookie-composer"
}
        
Elapsed time: 0.26095s