Skip to content

Add cookiecutter template#179

Merged
ednolan merged 1 commit intomainfrom
enolan_cookiecutter1
Jun 23, 2025
Merged

Add cookiecutter template#179
ednolan merged 1 commit intomainfrom
enolan_cookiecutter1

Conversation

@ednolan
Copy link
Copy Markdown
Member

@ednolan ednolan commented Jun 10, 2025

This commit introduces a 'cookiecutter' directory that users can use to spin off new projects using exemplar as a template. After invoking cookiecutter on the repository, users are prompted for a new project name, directory name, C++ version, paper, owner, and description, and these values are filled into the template.

It also adds two new checks into CI: that, when the template is filled in with the values for exemplar itself, the result is identical to exemplar; and, that if a name other than "exemplar" is specified for the project name, then the string "exemplar" does not appear in the output when the template is filled in.

These CI checks can be tested by maintainers of exemplar without
needing to update the pull request by running the script
check_cookiecutter.sh.

Comment thread cookiecutter/{{cookiecutter.directory_name}}/CMakeLists.txt
Comment thread cookiecutter/{{cookiecutter.directory_name}}/CMakeLists.txt
Comment thread cookiecutter/{{cookiecutter.directory_name}}/CMakeLists.txt
Comment thread cookiecutter/{{cookiecutter.directory_name}}/CMakeLists.txt
Comment thread cookiecutter/{{cookiecutter.directory_name}}/CMakeLists.txt
@ednolan ednolan force-pushed the enolan_cookiecutter1 branch 3 times, most recently from 8e55c75 to d3b9668 Compare June 10, 2025 01:04
@wusatosi wusatosi linked an issue Jun 10, 2025 that may be closed by this pull request
Comment thread cookiecutter/{{cookiecutter.directory_name}}/.github/CODEOWNERS
@ednolan ednolan force-pushed the enolan_cookiecutter1 branch 4 times, most recently from fca125a to 4f4c113 Compare June 22, 2025 14:41
This commit introduces a 'cookiecutter' directory that users can use
to spin off new projects using exemplar as a template. After invoking
cookiecutter on the repository, users are prompted for a new project
name, directory name, C++ version, paper, owner, and description, and
these values are filled into the template.

It also adds two new checks into CI: that, when the template is filled
in with the values for exemplar itself, the result is identical to
exemplar; and, that if a name other than "exemplar" is specified for
the project name, then the string "exemplar" does not appear in the
output when the template is filled in.

These CI checks can be tested by maintainers of exemplar without
needing to update the pull request by running the script
check_cookiecutter.sh.
@ednolan ednolan force-pushed the enolan_cookiecutter1 branch from 4f4c113 to 318671a Compare June 22, 2025 14:52
@ednolan ednolan merged commit ac21e8e into main Jun 23, 2025
138 checks passed
@ednolan ednolan deleted the enolan_cookiecutter1 branch June 23, 2025 14:39
@ClausKlein
Copy link
Copy Markdown
Contributor

ClausKlein commented Jul 1, 2025

@ednolan I miss some information what is to do if a developer change something on this repo?

i.e. changes on CMakeLists.txt

see #173

@ednolan
Copy link
Copy Markdown
Member Author

ednolan commented Jul 1, 2025

You need to make all your changes twice-- e.g., once in /CMakeLists.txt and once in /cookiecutter/{{cookiecutter.project_name}}/CMakeLists.txt-- and make sure any use of the word exemplar/EXEMPLAR is templated, i.e. replaced with {{cookiecutter.project_name}} or {{cookiecutter.project_name}}.upper(), respectively.

@ClausKlein
Copy link
Copy Markdown
Contributor

You need to make all your changes twice

and what is the real benefit of tis cookie cutter?

@ednolan
Copy link
Copy Markdown
Member Author

ednolan commented Jul 1, 2025

People using exemplar as a template for new projects can invoke cookiecutter and have it fill in their new project name everywhere instead of needing to perform an error-prone manual find-and-replace across the entire project.

@ClausKlein
Copy link
Copy Markdown
Contributor

ClausKlein commented Jul 1, 2025

sorry, everywere beman and exemmplar found, this does not really help:

klein_cl@lx005535:~/Workspace/cpp/beman/exemplar$ egrep -rw '(exemplar|EXEMPLAR)' cookiecutter/
cookiecutter/check_cookiecutter.sh:        project_name="exemplar" \
cookiecutter/check_cookiecutter.sh:    cp "$script_dir"/../.github/workflows/cookiecutter_test.yml "$out_dir_path"/exemplar/.github/workflows
cookiecutter/check_cookiecutter.sh:    diff -r "$script_dir/.." "$out_dir_path/exemplar" \
cookiecutter/check_cookiecutter.sh:        echo "Discrepancy between exemplar and cookiecutter:" >&2
cookiecutter/check_cookiecutter.sh:        "exemplar" "$out_dir_path/RLZrmX9NfS" > "$grep_path" || true
cookiecutter/check_cookiecutter.sh:        echo "Untemplated \"exemplar\" in cookiecutter:" >&2
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/conftest.py:        "markers", "use_test_repo: mark test to use test repository instead of exemplar"
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py:        # Title: # beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py:        # Title: # beman.exemplar: Another Beman Library
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py:        # Title: # beman.exemplar: Awesome Beman Library
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/test_readme.py:        # Title: # beman.exemplar: The Most Awesome Beman Library
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v1.md:# beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v1.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v1.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v2.md:# beman.exemplar: Another Beman Library
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v2.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v2.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v4.md:# beman.exemplar: The Most Awesome Beman Library
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v4.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v4.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v3.md:# beman.exemplar: Awesome Beman Library
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v3.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/valid/README-v3.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v4.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v4.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v2.md:# beman.exemplar A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v2.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v2.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v1.md:# beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v1.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v1.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v1.md:# beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v1.md:![Library typo Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v1.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v3.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v3.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v3.md:# beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v3.md:![Library Status](https://raw.githubusercontent.com/mylogo) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v3.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v2.md:# beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v2.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v2.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v1.md:# beman exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v1.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v1.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-title-v1.md:This is NOT a valid README.md according to the Beman Standard: missing beman.exemplar.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v3.md:# beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v3.md:![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-status-line-v3.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v2.md:# beman.exemplar: A Beman Library Exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v2.md:![Other display text](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/lib/checks/beman_standard/readme/data/invalid/invalid-badge-v2.md:**Purpose**: `beman.exemplar` is a minimal C++ library conforming to [The Beman Standard](https://github.com/bemanproject/beman/blob/main/docs/BEMAN_STANDARD.md). This can be used as a template for those intending to write Beman libraries. It may also find use as a minimal and modern  C++ project structure.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/utils/conftest.py:    """Return repository information for beman.exemplar library"""
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/utils/conftest.py:        "name": "exemplar",
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/tests/utils/conftest.py:        "remote_url": "https://github.com/bemanproject/exemplar",
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:- Run beman-tidy on the exemplar repository **(default: dry-run mode)**
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:$ uv run beman-tidy /path/to/exemplar --require-all
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:$ uv run beman-tidy /path/to/exemplar
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:$ uv run beman-tidy /path/to/exemplar --require-all --verbose
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:[WARNING        ][DIRECTORY.SOURCES        ]: The directory '/Users/dariusn/dev/dn/git/Beman/exemplar/src/beman/exemplar' does not exist.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:$ uv run beman-tidy /path/to/exemplar --require-all --verbose
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:- Run beman-tidy on the exemplar repository (fix issues in-place):
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/README.md:uv run beman-tidy path/to/exemplar --fix-inplace --verbose
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/docs/dev-guide.md:  * `repo_info`: The repository information (e.g., path, name, etc.). Mocked with hardcoded values of `beman.exemplar`.
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/beman_tidy/lib/utils/string.py:    e.g., ![Library Status](https://raw.githubusercontent.com/bemanproject/beman/refs/heads/main/images/badges/beman_badge-beman_library_under_development.svg) ![Continuous Integration Tests](https://github.com/bemanproject/exemplar/actions/workflows/ci_tests.yml/badge.svg) ![Lint Check (pre-commit)](https://github.com/bemanproject/exemplar/actions/workflows/pre-commit.yml/badge.svg)
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/beman_tidy/lib/checks/base/directory_base_check.py:        # set path - e.g. "src/beman/exemplar"
cookiecutter/{{cookiecutter.project_name}}/infra/tools/beman-tidy/beman_tidy/lib/checks/beman_standard/release.py:# Note: Data is stored online - e.g. https://github.com/bemanproject/exemplar/releases
klein_cl@lx005535:~/Workspace/cpp/beman/exemplar$ 

@ednolan
Copy link
Copy Markdown
Member Author

ednolan commented Jul 1, 2025

All of those examples are either in the CI script that checks the cookiecutter template, or in the infra beman-submodule, which is excluded from templating and contains the string exemplar for unrelated reasons. There is a CI check that ensures that the string exemplar does not appear elsewhere in the cookiecutter directory.

@ClausKlein
Copy link
Copy Markdown
Contributor

But than this template is only usable for beman project?

@ednolan
Copy link
Copy Markdown
Member Author

ednolan commented Jul 1, 2025

Cookiecutter will also prompt you for the owner field, and you can input something other than bemanproject. However, that's not currently tested in CI because it's more difficult to test for that than testing for exemplar, since, unlike with exemplar, there are various instances of the string bemanproject that shouldn't be replaced by the template. So it's currently best-effort.

@ClausKlein
Copy link
Copy Markdown
Contributor

ClausKlein commented Jul 1, 2025

sorry to say, but that is the last contibution to this project, to mutch useless work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Evaluate exemplar as a template using cookie-cuter/ cargo-generate

4 participants