Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,9 @@ jobs:
- name: Generate the project with the default value
run: |
rm -rf src/serious_scaffold
copier copy -x '!src/serious_scaffold' -r HEAD -f . .
rm -rf .github
rm -rf .gitlab-ci.yml
copier copy -x '!src/serious_scaffold' -d ci=both -r HEAD -f . .
- run: git diff
- run: git status --porcelain
- run: |
Expand Down
4 changes: 2 additions & 2 deletions .gitignore.jinja
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Custom
*.swp
.DS_Store
{%- if project_name == "Serious Scaffold Python" %}
[%- if project_name == "Serious Scaffold Python" %]
.copier-answers.yml
{%- endif %}
[%- endif %]
Pipfile
public

Expand Down
2 changes: 2 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
"sortJSONValuesReverse": false
},
"vscode-yaml-sort.customSortKeywords_2": [
"_envops",
"_exclude",
"project_name",
"project_description",
Expand All @@ -86,6 +87,7 @@
"min_py",
"max_py",
"default_py",
"ci",
"choices",
"stages",
"default",
Expand Down
4 changes: 2 additions & 2 deletions Makefile.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ PUBLIC_DIR := $(if $(shell [ "$$READTHEDOCS" = "True" ] && echo 1),$$READTHEDOCS
clean:
-rm -rf \
${PUBLIC_DIR} \
{%- if project_name == "Serious Scaffold Python" %}
[%- if project_name == "Serious Scaffold Python" %]
.copier-answers.yml \
{%- endif %}
[%- endif %]
.coverage \
.mypy_cache \
.pytest_cache \
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% from pathjoin("includes", "version_compare.jinja") import version_between -%}
[% from pathjoin("includes", "version_compare.jinja") import version_between -%]
stages:
- lint_test
- build_release
Expand All @@ -14,18 +14,18 @@ lint:
parallel:
matrix:
- PYTHON_VERSION:
{%- if version_between("3.8", min_py, max_py) %}
[%- if version_between("3.8", min_py, max_py) %]
- '3.8'
{%- endif %}
{%- if version_between("3.9", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.9", min_py, max_py) %]
- '3.9'
{%- endif %}
{%- if version_between("3.10", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.10", min_py, max_py) %]
- '3.10'
{%- endif %}
{%- if version_between("3.11", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.11", min_py, max_py) %]
- '3.11'
{%- endif %}
[%- endif %]
script:
- env | sort
- make dev-lint
Expand All @@ -47,18 +47,18 @@ test:
parallel:
matrix:
- PYTHON_VERSION:
{%- if version_between("3.8", min_py, max_py) %}
[%- if version_between("3.8", min_py, max_py) %]
- '3.8'
{%- endif %}
{%- if version_between("3.9", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.9", min_py, max_py) %]
- '3.9'
{%- endif %}
{%- if version_between("3.10", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.10", min_py, max_py) %]
- '3.10'
{%- endif %}
{%- if version_between("3.11", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.11", min_py, max_py) %]
- '3.11'
{%- endif %}
[%- endif %]
script:
- env | sort
- make dev-test
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% from pathjoin("includes", "version_compare.jinja") import version_between -%}
[% from pathjoin("includes", "version_compare.jinja") import version_between -%]
jobs:
lint:
runs-on: ubuntu-latest
Expand All @@ -15,18 +15,18 @@ jobs:
strategy:
matrix:
python-version:
{%- if version_between("3.8", min_py, max_py) %}
[%- if version_between("3.8", min_py, max_py) %]
- '3.8'
{%- endif %}
{%- if version_between("3.9", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.9", min_py, max_py) %]
- '3.9'
{%- endif %}
{%- if version_between("3.10", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.10", min_py, max_py) %]
- '3.10'
{%- endif %}
{%- if version_between("3.11", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.11", min_py, max_py) %]
- '3.11'
{%- endif %}
[%- endif %]
test:
runs-on: ubuntu-latest
steps:
Expand All @@ -46,19 +46,19 @@ jobs:
strategy:
matrix:
python-version:
{%- if version_between("3.8", min_py, max_py) %}
[%- if version_between("3.8", min_py, max_py) %]
- '3.8'
{%- endif %}
{%- if version_between("3.9", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.9", min_py, max_py) %]
- '3.9'
{%- endif %}
{%- if version_between("3.10", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.10", min_py, max_py) %]
- '3.10'
{%- endif %}
{%- if version_between("3.11", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.11", min_py, max_py) %]
- '3.11'
{%- endif %}
{%- if project_name == "Serious Scaffold Python" %}
[%- endif %]
[%- if project_name == "Serious Scaffold Python" %]
consistency:
runs-on: ubuntu-latest
steps:
Expand All @@ -78,7 +78,9 @@ jobs:
- name: Generate the project with the default value
run: |
rm -rf src/serious_scaffold
copier copy -x '!src/serious_scaffold' -r HEAD -f . .
rm -rf .github
rm -rf .gitlab-ci.yml
copier copy -x '!src/serious_scaffold' -d ci=both -r HEAD -f . .
- run: git diff
- run: git status --porcelain
- run: |
Expand All @@ -88,19 +90,19 @@ jobs:
strategy:
matrix:
python-version:
{%- if version_between("3.8", min_py, max_py) %}
[%- if version_between("3.8", min_py, max_py) %]
- '3.8'
{%- endif %}
{%- if version_between("3.9", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.9", min_py, max_py) %]
- '3.9'
{%- endif %}
{%- if version_between("3.10", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.10", min_py, max_py) %]
- '3.10'
{%- endif %}
{%- if version_between("3.11", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.11", min_py, max_py) %]
- '3.11'
{%- endif %}
{%- endif %}
[%- endif %]
[%- endif %]
name: CI
on:
pull_request:
Expand Down
33 changes: 22 additions & 11 deletions copier.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
_envops:
block_end_string: '%]'
block_start_string: '[%'
_exclude:
- '*.py[co]'
- .DS_Store
Expand Down Expand Up @@ -27,11 +30,11 @@ organization_name:
type: str
author_email:
default: |-
{% if author_name == 'huxuan' and organization_name == 'Serious Scaffold' -%}
[% if author_name == 'huxuan' and organization_name == 'Serious Scaffold' -%]
i@huxuan.org
{%- else -%}
[%- else -%]
{{ author_name }}@{{ organization_name|lower|replace(" ", "-") }}.com
{%- endif %}
[%- endif %]
help: 'Specify the email address of the author:'
type: str
repo_namespace:
Expand All @@ -54,7 +57,7 @@ coverage_threshold:
default: 100
help: 'Set the threshold for test coverage, ranging from 0 to 100:'
type: int
validator: '{% if not 0 <= coverage_threshold <= 100 %}Test Coverage threshold should be between 0 and 100{% endif %}'
validator: '[% if not 0 <= coverage_threshold <= 100 %]Test Coverage threshold should be between 0 and 100[% endif %]'
min_py:
choices:
- '3.8'
Expand All @@ -67,13 +70,13 @@ min_py:
max_py:
choices:
'3.8':
validator: '{% from pathjoin("includes", "version_compare.jinja") import version_higher_than_validator %}{{ version_higher_than_validator("3.8", min_py) }}'
validator: '[% from pathjoin("includes", "version_compare.jinja") import version_higher_than_validator %]{{ version_higher_than_validator("3.8", min_py) }}'
value: '3.8'
'3.9':
validator: '{% from pathjoin("includes", "version_compare.jinja") import version_higher_than_validator %}{{ version_higher_than_validator("3.9", min_py) }}'
validator: '[% from pathjoin("includes", "version_compare.jinja") import version_higher_than_validator %]{{ version_higher_than_validator("3.9", min_py) }}'
value: '3.9'
'3.10':
validator: '{% from pathjoin("includes", "version_compare.jinja") import version_higher_than_validator %}{{ version_higher_than_validator("3.10", min_py) }}'
validator: '[% from pathjoin("includes", "version_compare.jinja") import version_higher_than_validator %]{{ version_higher_than_validator("3.10", min_py) }}'
value: '3.10'
'3.11':
value: '3.11'
Expand All @@ -83,17 +86,25 @@ max_py:
default_py:
choices:
'3.8':
validator: '{% from pathjoin("includes", "version_compare.jinja") import version_between_validator %}{{ version_between_validator("3.8", min_py, max_py) }}'
validator: '[% from pathjoin("includes", "version_compare.jinja") import version_between_validator %]{{ version_between_validator("3.8", min_py, max_py) }}'
value: '3.8'
'3.9':
validator: '{% from pathjoin("includes", "version_compare.jinja") import version_between_validator %}{{ version_between_validator("3.9", min_py, max_py) }}'
validator: '[% from pathjoin("includes", "version_compare.jinja") import version_between_validator %]{{ version_between_validator("3.9", min_py, max_py) }}'
value: '3.9'
'3.10':
validator: '{% from pathjoin("includes", "version_compare.jinja") import version_between_validator %}{{ version_between_validator("3.10", min_py, max_py) }}'
validator: '[% from pathjoin("includes", "version_compare.jinja") import version_between_validator %]{{ version_between_validator("3.10", min_py, max_py) }}'
value: '3.10'
'3.11':
validator: '{% from pathjoin("includes", "version_compare.jinja") import version_between_validator %}{{ version_between_validator("3.11", min_py, max_py) }}'
validator: '[% from pathjoin("includes", "version_compare.jinja") import version_between_validator %]{{ version_between_validator("3.11", min_py, max_py) }}'
value: '3.11'
default: '{{ max_py }}'
help: 'Choose the default Python version for development, documentation generation, and package build:'
type: str
ci:
choices:
Both (for test only): both
GitHub Actions: github
GitLab CI: gitlab
default: github
help: 'Choose the Continuous Integration service to use:'
type: str
16 changes: 8 additions & 8 deletions includes/version_compare.jinja
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
{% macro version_higher_than(version1, version2) -%}
[% macro version_higher_than(version1, version2) -%]
{{ "1" if version1.split(".") | map("int") | list >= version2.split(".") | map("int") | list }}
{%- endmacro %}
[%- endmacro %]

{% macro version_higher_than_validator(version1, version2) -%}
[% macro version_higher_than_validator(version1, version2) -%]
{{
"Invalid version. The version '%s' is not higher than '%s'." % (version1, version2)
if not version_higher_than(version1, version2)
}}
{%- endmacro %}
[%- endmacro %]

{% macro version_between(version, version_min, version_max) -%}
[% macro version_between(version, version_min, version_max) -%]
{{
"1" if version_min.split(".") | map("int") | list <= version.split(".") | map("int") | list <= version_max.split(".") | map("int") | list
}}
{%- endmacro %}
[%- endmacro %]

{% macro version_between_validator(version, version_min, version_max) -%}
[% macro version_between_validator(version, version_min, version_max) -%]
{{
"Invalid version. The version '%s' is not between '%s' and '%s'." % (version, version_min, version_max)
if not version_between(version, version_min, version_max)
}}
{%- endmacro %}
[%- endmacro %]
26 changes: 13 additions & 13 deletions pyproject.toml.jinja
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% from pathjoin("includes", "version_compare.jinja") import version_between -%}
[% from pathjoin("includes", "version_compare.jinja") import version_between -%]
[build-system]
build-backend = "setuptools.build_meta"
requires = [
Expand All @@ -14,18 +14,18 @@ classifiers = [
"Development Status :: 4 - Beta",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
{%- if version_between("3.10", min_py, max_py) %}
[%- if version_between("3.10", min_py, max_py) %]
"Programming Language :: Python :: 3.10",
{%- endif %}
{%- if version_between("3.11", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.11", min_py, max_py) %]
"Programming Language :: Python :: 3.11",
{%- endif %}
{%- if version_between("3.8", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.8", min_py, max_py) %]
"Programming Language :: Python :: 3.8",
{%- endif %}
{%- if version_between("3.9", min_py, max_py) %}
[%- endif %]
[%- if version_between("3.9", min_py, max_py) %]
"Programming Language :: Python :: 3.9",
{%- endif %}
[%- endif %]
]
description = "{{ project_description }}"
dynamic = [
Expand Down Expand Up @@ -53,9 +53,9 @@ fail_under = {{ coverage_threshold }}

[tool.coverage.run]
omit = [
{%- if project_name == "Serious Scaffold Python" %}
[%- if project_name == "Serious Scaffold Python" %]
"src/{{ '{{ module_name }}' }}/**",
{%- endif %}
[%- endif %]
]
source = [
"{{ module_name }}",
Expand All @@ -73,9 +73,9 @@ enable_error_code = [
"ignore-without-code",
]
exclude = [
{%- if project_name == "Serious Scaffold Python" %}
[%- if project_name == "Serious Scaffold Python" %]
"src/{{ '{{ module_name }}' }}",
{%- endif %}
[%- endif %]
]
no_implicit_optional = true
show_error_codes = true
Expand Down
Loading