mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-05-24 01:12:54 -04:00
* Activate more linting rules from eslint and typescript * Properly add VForm as type information * Fix usage of native types * Fix more linting issues * Rename vuetify types file, add VTooltip * Fix some more typing problems * Use composition API for more components * Convert RecipeRating * Convert RecipeNutrition * Convert more components to composition API * Fix globals plugin for type checking * Add missing icon types * Fix vuetify types in Nuxt context * Use composition API for RecipeActionMenu * Convert error.vue to composition API * Convert RecipeContextMenu to composition API * Use more composition API and type checking in recipe/create * Convert AppButtonUpload to composition API * Fix some type checking in RecipeContextMenu * Remove unused components BaseAutoForm and BaseColorPicker * Convert RecipeCategoryTagDialog to composition API * Convert RecipeCardSection to composition API * Convert RecipeCategoryTagSelector to composition API * Properly import vuetify type definitions * Convert BaseButton to composition API * Convert AutoForm to composition API * Remove unused requests API file * Remove static routes from recipe API * Fix more type errors * Convert AppHeader to composition API, fixing some search bar focus problems * Convert RecipeDialogSearch to composition API * Update API types from pydantic models, handle undefined values * Improve more typing problems * Add types to other plugins * Properly type the CRUD API access * Fix typing of static image routes * Fix more typing stuff * Fix some more typing problems * Turn off more rules
59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
from pathlib import Path
|
|
|
|
from jinja2 import Template
|
|
|
|
template = """// This Code is auto generated by gen_global_components.py
|
|
{% for name in global %} import {{ name }} from "@/components/global/{{ name }}.vue";
|
|
{% endfor %}
|
|
{% for name in layout %} import {{ name }} from "@/components/layout/{{ name }}.vue";
|
|
{% endfor %}
|
|
|
|
declare module "vue" {
|
|
export interface GlobalComponents {
|
|
// Global Components
|
|
{% for name in global %} {{ name }}: typeof {{ name }};
|
|
{% endfor %} // Layout Components
|
|
{% for name in layout %} {{ name }}: typeof {{ name }};
|
|
{% endfor %}
|
|
}
|
|
}
|
|
|
|
export {};
|
|
"""
|
|
|
|
project_dir = Path(__file__).parent.parent.parent
|
|
|
|
destination_file = project_dir / "frontend" / "types" / "components.d.ts"
|
|
|
|
component_paths = {
|
|
"global": project_dir / "frontend" / "components" / "global",
|
|
"layout": project_dir / "frontend" / "components" / "Layout",
|
|
}
|
|
|
|
|
|
def render_template(template: str, data: dict) -> None:
|
|
template = Template(template)
|
|
|
|
return template.render(**data)
|
|
|
|
|
|
def build_data(component_paths: dict) -> dict:
|
|
data = {}
|
|
for name, path in component_paths.items():
|
|
components = []
|
|
for component in path.glob("*.vue"):
|
|
components.append(component.stem)
|
|
data[name] = components
|
|
|
|
return data
|
|
|
|
|
|
def write_template(text: str) -> None:
|
|
destination_file.write_text(text)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
data = build_data(component_paths)
|
|
text = render_template(template, build_data(component_paths))
|
|
write_template(text)
|