From 7a20a3a1958ac72349b16b1651f7d4364b4772c9 Mon Sep 17 00:00:00 2001 From: Feodor Fitsner Date: Tue, 4 Mar 2025 10:45:11 -0800 Subject: [PATCH] Test my_custom_function --- cookiecutter.json | 3 +-- hooks/post_gen_project.py | 35 ++++++++++++++++++++++++++ {{cookiecutter.out_dir}}/lib/main.dart | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 hooks/post_gen_project.py diff --git a/cookiecutter.json b/cookiecutter.json index 778cba7..9632202 100644 --- a/cookiecutter.json +++ b/cookiecutter.json @@ -28,6 +28,5 @@ "pwa_theme_color": "#0175C2", "split_per_abi": false, "options": null, - "pyproject": null, - "get_pyproject": null + "pyproject": null } \ No newline at end of file diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py new file mode 100644 index 0000000..0e7512f --- /dev/null +++ b/hooks/post_gen_project.py @@ -0,0 +1,35 @@ +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) diff --git a/{{cookiecutter.out_dir}}/lib/main.dart b/{{cookiecutter.out_dir}}/lib/main.dart index 7edae6e..2a05f85 100644 --- a/{{cookiecutter.out_dir}}/lib/main.dart +++ b/{{cookiecutter.out_dir}}/lib/main.dart @@ -26,7 +26,7 @@ loading_screen: {{ loading_screen }} loading_screen_text: {{ loading_screen_text }} -test: {{ cookiecutter.get_pyproject("tool.flet.loading_screen_text") }} +Uppercase Example: {{ my_custom_function("abc") }} */ {% for dep in cookiecutter.flutter.dependencies %}