cookie-composer


Namecookie-composer JSON
Version 0.13.0 PyPI version JSON
download
home_page
SummaryCreate new projects from a composition of several templates
upload_time2024-02-10 12:41:21
maintainer
docs_urlNone
author
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": "",
    "name": "cookie-composer",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "cookie-composer,cookiecutter,scaffold",
    "author": "",
    "author_email": "Corey Oordt <coreyoordt@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/74/19/633d903c13c9de6e9615cd6fe5da2b95daed6118d657a767a3dc0af6be90/cookie-composer-0.13.0.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.0",
    "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": "a7fb9dd508bb894c10c6d418c94e19d7e56fdac928f47163186f0a522489c43e",
                "md5": "e3cbe1bd6336e145776a67adbfe682d6",
                "sha256": "1b9a907978e6bfc5b46f11baa877d16a3fe3803b36ba0d2039bca316b4a2dc64"
            },
            "downloads": -1,
            "filename": "cookie_composer-0.13.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e3cbe1bd6336e145776a67adbfe682d6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 45679,
            "upload_time": "2024-02-10T12:41:19",
            "upload_time_iso_8601": "2024-02-10T12:41:19.177093Z",
            "url": "https://files.pythonhosted.org/packages/a7/fb/9dd508bb894c10c6d418c94e19d7e56fdac928f47163186f0a522489c43e/cookie_composer-0.13.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7419633d903c13c9de6e9615cd6fe5da2b95daed6118d657a767a3dc0af6be90",
                "md5": "6fb5d1ed95f9dc9ac629c6d28bed4650",
                "sha256": "0584c5e1bb289cf65ff88ff26df103ed7d9431b366058055d4b9f82c0f40f4be"
            },
            "downloads": -1,
            "filename": "cookie-composer-0.13.0.tar.gz",
            "has_sig": false,
            "md5_digest": "6fb5d1ed95f9dc9ac629c6d28bed4650",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 77031,
            "upload_time": "2024-02-10T12:41:21",
            "upload_time_iso_8601": "2024-02-10T12:41:21.035829Z",
            "url": "https://files.pythonhosted.org/packages/74/19/633d903c13c9de6e9615cd6fe5da2b95daed6118d657a767a3dc0af6be90/cookie-composer-0.13.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-10 12:41:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "callowayproject",
    "github_project": "cookie-composer",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "cookie-composer"
}
        
Elapsed time: 0.35279s