Source Code: https://github.com/fholmer/make
License: BSD License
Summary
Create project layout from jinja2 templates.
Installation
$ pip install make
or
$ pip install --user make
Usage
In general:
$ python -m make project source-path
Where source-path can be a local path:
$ python -m make project examples/ini_features
A local zip file:
$ python -m make project examples/ini_features.zip
Zip file over http or https:
$ python -m make project -p simple-master https://gitlab.com/fholmer/simple/-/archive/master/simple-master.zip
Short url for Github:
$ python -m make project gh:fholmer/simple
And Gitlab:
$ python -m make project gl:fholmer/simple
Sub dirs is also supported for Gitlab:
$ python -m make project gl:fholmer/templates/proj1
Simple cookiecutter templates is also supported.
We will use a popular cookiecutter template in this example:
$ python -m make project gh:kragniz/cookiecutter-pypackage-minimal
How to make your own project template
The source-path have to contain a file named project.conf or project.json. Choose the format you prefer.
Format of project.conf:
[project]
name = App
package = {{project.name.lower().replace(' ','_').replace('-', '_')}}
include_tests = json::["none", "pytest"]
include_docs = json::["none", "sphinx", "mkdocs"]
# this is a comment.
# section or keys starting with _ is non-interactive variables
_test_dir = {{ 'tests' if project.include_tests != 'none' else '' }}
[_docs]
dir=
{%%- if project.include_docs == 'sphinx' -%%}
docs
{%%- elif project.include_docs == 'mkdocs' -%%}
docz
{%%- else -%%}
{%%- endif -%%}
The ini-format allows for multi line values, but % have to be escaped. Comments is allowed. Use the special prefix json:: to serialize subsequent text as json.
Format of project.json:
{
"project": {
"name": "App",
"package": "{{project.name.lower().replace(' ','_').replace('-', '_')}}",
"include_tests": ["none", "pytest"],
"include_docs": ["none", "sphinx", "mkdocs"],
"_test_dir": "{{ 'tests' if project.include_tests != 'none' else '' }}"
},
"_docs": {
"dir": "{%- if project.include_docs == 'sphinx' -%}\ndocs\n{%- elif project.include_docs == 'mkdocs' -%}\ndocz\n{%- else -%}\n{%- endif -%}"
}
}
The json-format do not have multi line but you can use multiple \n in one line.
The source directory could be something like this:
/My-Project-Template
/{{project.name}}
/{{_docs.dir}}
conf.py
/{{project._test_dir}}
/{{project.package}}
__init__.py
setup.py
LICENSE
README.rst
project.conf
{{project.name}}/setup.py may look something like this:
from setuptools import setup, find_packages
from {{ project.package }} import __version__ as app_version
setup(
name="{{ project.name }}",
version=app_version,
packages=find_packages(include=['{{ project.package }}*']),
)
Metadata
Release files for make 0.1.6.post2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| make-0.1.6.post2-py3-none-any.whl | Python 3 | none | any | Details |
Release files / make-0.1.6.post2-py3-none-any.whl
| Download URL | make-0.1.6.post2-py3-none-any.whl |
|---|---|
| Size | 14.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
307991f0d24668b7785a9abade301ba6c2d004460e90c59baf19b47c16b8ed39
|
|
BLAKE2b-256 checksum How to use checksums |
718baf4b541d2a6e1ea2021dc95f5fd75fc5679462e5b06b155eed65b25cc2eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3
|