36 lines
850 B
Python
36 lines
850 B
Python
from typing import Any, Optional
|
|
|
|
import cookiecutter.utils
|
|
|
|
|
|
def get_pyproject(pyproject_toml: Any, setting: Optional[str] = None):
|
|
if not setting:
|
|
return pyproject_toml
|
|
|
|
d = pyproject_toml
|
|
for k in setting.split("."):
|
|
d = d.get(k)
|
|
if d is None:
|
|
return None
|
|
return d
|
|
|
|
|
|
def my_custom_function(value):
|
|
"""Example function: returns the value in uppercase"""
|
|
return value.upper()
|
|
|
|
|
|
def another_function(value1, value2):
|
|
"""Concatenates two values with a space"""
|
|
return f"{value1} {value2}"
|
|
|
|
|
|
# Inject custom functions into Jinja's global context
|
|
def add_custom_filters(cookiecutter):
|
|
cookiecutter.globals["my_custom_function"] = my_custom_function
|
|
cookiecutter.globals["another_function"] = another_function
|
|
|
|
|
|
# Run after project is generated
|
|
add_custom_filters(cookiecutter)
|