Add more templates and keep template name in kebab case
This commit is contained in:
parent
6587103ed1
commit
511ff8a330
@ -103,6 +103,12 @@ class Templates(SimpleNamespace):
|
|||||||
# The option for the user to choose a remote template.
|
# The option for the user to choose a remote template.
|
||||||
CHOOSE_TEMPLATES = "choose-templates"
|
CHOOSE_TEMPLATES = "choose-templates"
|
||||||
|
|
||||||
|
# The URL to find reflex templates.
|
||||||
|
REFLEX_TEMPLATES_URL = "https://reflex.dev/templates"
|
||||||
|
|
||||||
|
# Demo url for the default template.
|
||||||
|
DEFAULT_TEMPLATE_URL = "https://blank-template.reflex.run"
|
||||||
|
|
||||||
# The reflex.build frontend host
|
# The reflex.build frontend host
|
||||||
REFLEX_BUILD_FRONTEND = "https://flexgen.reflex.run"
|
REFLEX_BUILD_FRONTEND = "https://flexgen.reflex.run"
|
||||||
|
|
||||||
|
@ -766,3 +766,16 @@ def format_data_editor_cell(cell: Any):
|
|||||||
"kind": Var(_js_expr="GridCellKind.Text"),
|
"kind": Var(_js_expr="GridCellKind.Text"),
|
||||||
"data": cell,
|
"data": cell,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def format_template_name(name: str) -> str:
|
||||||
|
"""Format the template name of remote templates obtained during reflex init.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: The name of the template.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The formatted template name.
|
||||||
|
"""
|
||||||
|
formatted_name = to_kebab_case(name)
|
||||||
|
return formatted_name.removesuffix("-app").removesuffix("-template")
|
||||||
|
@ -39,7 +39,7 @@ from reflex.utils.exceptions import (
|
|||||||
GeneratedCodeHasNoFunctionDefs,
|
GeneratedCodeHasNoFunctionDefs,
|
||||||
raise_system_package_missing_error,
|
raise_system_package_missing_error,
|
||||||
)
|
)
|
||||||
from reflex.utils.format import format_library_name
|
from reflex.utils.format import format_library_name, format_template_name
|
||||||
from reflex.utils.registry import _get_npm_registry
|
from reflex.utils.registry import _get_npm_registry
|
||||||
|
|
||||||
CURRENTLY_INSTALLING_NODE = False
|
CURRENTLY_INSTALLING_NODE = False
|
||||||
@ -1242,6 +1242,30 @@ def prompt_for_template_options(templates: list[Template]) -> str:
|
|||||||
return templates[int(template)].name
|
return templates[int(template)].name
|
||||||
|
|
||||||
|
|
||||||
|
def get_other_templates() -> list[dict[str, str]]:
|
||||||
|
"""Get other templates not included in the templates repo.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List of other templates.
|
||||||
|
"""
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
"name": "llamaindex",
|
||||||
|
"description": "A minimal chat app using LLamaIndex.",
|
||||||
|
"demo_url": "https://frontend-gold-orca.dev.reflexcorp.run/",
|
||||||
|
"code_url": "https://github.com/reflex-dev/reflex-llamaindex-template/archive/refs/heads/main.zip",
|
||||||
|
"hidden": False,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chat",
|
||||||
|
"description": "A chat app with a dark theme.",
|
||||||
|
"demo_url": "https://chat.reflex.run",
|
||||||
|
"code_url": "https://github.com/reflex-dev/reflex-chat/archive/refs/heads/main.zip",
|
||||||
|
"hidden": False,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def fetch_app_templates(version: str) -> dict[str, Template]:
|
def fetch_app_templates(version: str) -> dict[str, Template]:
|
||||||
"""Fetch a dict of templates from the templates repo using github API.
|
"""Fetch a dict of templates from the templates repo using github API.
|
||||||
|
|
||||||
@ -1288,9 +1312,12 @@ def fetch_app_templates(version: str) -> dict[str, Template]:
|
|||||||
),
|
),
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
|
# include other templates not in the templates repo.
|
||||||
|
templates_data.extend(get_other_templates())
|
||||||
|
|
||||||
filtered_templates = {}
|
filtered_templates = {}
|
||||||
for tp in templates_data:
|
for tp in templates_data:
|
||||||
|
tp["name"] = format_template_name(tp["name"])
|
||||||
if tp["hidden"] or tp["code_url"] is None:
|
if tp["hidden"] or tp["code_url"] is None:
|
||||||
continue
|
continue
|
||||||
known_fields = set(f.name for f in dataclasses.fields(Template))
|
known_fields = set(f.name for f in dataclasses.fields(Template))
|
||||||
@ -1391,7 +1418,7 @@ def prompt_for_remote_template_selection(templates: dict[str, Template]) -> str:
|
|||||||
"""
|
"""
|
||||||
while True:
|
while True:
|
||||||
console.print(
|
console.print(
|
||||||
"Visit https://reflex.dev/templates for the complete list of templates."
|
f"Visit {constants.Templates.REFLEX_TEMPLATES_URL} for the complete list of templates."
|
||||||
)
|
)
|
||||||
selected_template = console.ask(
|
selected_template = console.ask(
|
||||||
"Enter a valid template name", show_choices=False
|
"Enter a valid template name", show_choices=False
|
||||||
@ -1484,7 +1511,7 @@ def fetch_and_prompt_with_remote_templates(
|
|||||||
try:
|
try:
|
||||||
# Get the available templates
|
# Get the available templates
|
||||||
available_templates = fetch_app_templates(constants.Reflex.VERSION)
|
available_templates = fetch_app_templates(constants.Reflex.VERSION)
|
||||||
|
console.info(available_templates)
|
||||||
if not show_prompt and template in available_templates:
|
if not show_prompt and template in available_templates:
|
||||||
return template, available_templates
|
return template, available_templates
|
||||||
|
|
||||||
@ -1575,19 +1602,19 @@ def get_init_cli_prompt_options() -> list[Template]:
|
|||||||
Template(
|
Template(
|
||||||
name=constants.Templates.DEFAULT,
|
name=constants.Templates.DEFAULT,
|
||||||
description="A blank Reflex app.",
|
description="A blank Reflex app.",
|
||||||
demo_url="https://blank-template.reflex.run",
|
demo_url=constants.Templates.DEFAULT_TEMPLATE_URL,
|
||||||
code_url="",
|
code_url="",
|
||||||
),
|
),
|
||||||
Template(
|
Template(
|
||||||
name=constants.Templates.AI,
|
name=constants.Templates.AI,
|
||||||
description="Generate a template using AI (Flexgen)",
|
description="Generate a template using AI (Flexgen)",
|
||||||
demo_url="https://flexgen.reflex.run",
|
demo_url=constants.Templates.REFLEX_BUILD_FRONTEND,
|
||||||
code_url="",
|
code_url="",
|
||||||
),
|
),
|
||||||
Template(
|
Template(
|
||||||
name=constants.Templates.CHOOSE_TEMPLATES,
|
name=constants.Templates.CHOOSE_TEMPLATES,
|
||||||
description="Choose an existing template.",
|
description="Choose an existing template.",
|
||||||
demo_url="https://reflex.dev/templates",
|
demo_url=constants.Templates.REFLEX_TEMPLATES_URL,
|
||||||
code_url="",
|
code_url="",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user