This repository can be used for generating a number of project structures in a number of different languages.
Current version is 1.3.1 and was set according to Semantic Versioning.
Project's version should be updated, when applicable:
- In this very file.
In order to start a new project, install Cookiecutter and run the following command:
$ cookiecutter https://github.com/ferreteleco/cookie-templates.git --directory="<dir-name>"
Where <dir-name> is one of the sub-folders of this repository (each one will hold a template for a different kind of project). Each available template can be seen in sub-sections below.
IMPORTANT! This will create the full structure for the project (including top level directory), so it is recommended that the project generation be invoked from outside vscode. The remote repository may be linked later by running the following commands (inside the top level directory of the project):
git init
git remote add origin <remote-repository-url>
NOTE: it can also be cloned using GIT over SSH, if properly configured in your account.
NOTE1: after the repository is downloaded, the template can be used again without downloading it again. In order to do so, simply specify template name as argument for cookiecutter:
$ cookiecutter com-cookiecutter-templates --directory="<dir-name>"
A Cookiecutter template for Cpp projects (executable version).
As its base (currently configured in the template), this projects only depends on one external library:
{%- if cookiecutter.add_spdlog_utils == 'True' -%} An additional dependency may be added implicitly due to selected options during project creation:
- spdlog {%- endif %}
Variables allow to customize your project. When running the previous command, you will be prompted to fill in the following values:
- project_name: Name of the project. This variable will also be used to create the default value for the project slug.
- project_slug: URL friendly name of the project. It is recommended to keep the default value.
- project_short_description: Short description of the project.
- version: Initial version of the project. If using a different value from the default, please follow Semantic Versioning recommendations.
- cpp_standard: C++ standard to use for compilation. Available values are C++17 (default), C++14 and C++11.
- full_name: Full name of the main maintainer of the project.
- email: Contact email of the main maintainer of the project.
- license: default license file for the project.
- vscode_project: flag to control generation of .vscode folder, with default snippets (VSCode text editor config files).
A Cookiecutter template for Cpp projects (library version).
As its base (currently configured in the template), this projects only depends on one external library:
Variables allow to customize your project. When running the previous command, you will be prompted to fill in the following values:
- project_name: Name of the project. This variable will also be used to create the default value for the project slug.
- project_slug: URL friendly name of the project. It is recommended to keep the default value.
- project_acronym: Acronym of the project. Defaults to the first letter of each word in project_slug, capitalized. It is recommended to maintain the default value.
- project_short_description: Short description of the project.
- version: Initial version of the project. If using a different value from the default, please follow Semantic Versioning recommendations.
- cpp_standard: C++ standard to use for compilation. Available values are C++17 (default), C++14 and C++11.
- library_type: kind of library to build, either shared (default) or static.
- full_name: Full name of the main maintainer of the project.
- email: Contact email of the main maintainer of the project.
- license: default license file for the project.
- vscode_project: flag to control generation of .vscode folder, with default snippets (VSCode text editor config files).
- add_spdlog_utils: Flag that controls whether or not to add some spdlog utility functions. Defaults to true.
A Cookiecutter template for python projects.
This template is intended to be used with the following libraries for environment and package management:
Although it can be used without them.
Variables allow to customize your project. When running the previous command, you will be prompted to fill in the following values:
- project_name: name of the project. This variable will also be used to create the default value for the project slug.
- project_slug: URL friendly name of the project. It is recommended to keep the default value.
- project_description: short description of the project.
- version: initial version of the project. If using a different value from the default, please follow Semantic Versioning recommendations.
- python_version: minimum required Python version in order to run the program.
- _generate_pyenv_file: flag to control generation of .python-version file (local Python version definition file for pyenv).
- generate_poetry_file: flag to control generation of pyproject.toml file (Poetry build system definition file).
- vscode_project: flag to control generation of .vscode folder, with default tasks.json file and some snippets (VSCode text editor config files).
- full_name: full name of the main maintainer of the project.
- email: contact email of the main maintainer of the project.
- license: default license file for the project.
A Cookiecutter template for matlab projects.
Variables allow to customize your project. When running the previous command, you will be prompted to fill in the following values:
- project_name: name of the project. This variable will also be used to create the default value for the project slug.
- project_slug: URL friendly name of the project. It is recommended to keep the default value.
- project_description: short description of the project.
- version: initial version of the project. If using a different value from the default, please follow Semantic Versioning recommendations.
- matlab_version: target version for matlab (documentation purposes).
- full_name: full name of the main maintainer of the project.
- email: contact email of the main maintainer of the project.
- license: default license file for the project.
- vscode_project: flag to control generation of .vscode folder, with default tasks.json file and some snippets (VSCode text editor config files).
If you want to contribute to this templating repository, feel free to do so! Create a new branch to work in and open a pull request when you are done! It will be reviewed and merged into master by one of the maintainers as soon as possible.