chatbot / gradio /cli /cli.py
siddharth24m's picture
Upload 3001 files
69ba728 verified
import sys
import typer
from rich.console import Console
from gradio import analytics
from .commands import (
custom_component,
deploy,
hf_login,
load_app,
print_environment_info,
reload,
sketch,
skills_app,
upload_mcp,
)
app = typer.Typer()
app.add_typer(load_app, name="load")
app.add_typer(skills_app, name="skills")
app.command("environment", help="Print Gradio environment information.")(
print_environment_info
)
app.command(
"deploy",
help="Deploy a Gradio app to Spaces or Google Cloud Run. Must be called within the directory you would like to deploy.",
)(deploy)
app.command("sketch", help="Open the Sketch app to design a Gradio app.")(sketch)
def cli():
args = sys.argv[1:]
if len(args) == 0:
raise ValueError("No file specified.")
if args[0] in {
"deploy",
"environment",
"deploy-discord",
"sketch",
"load",
"skills",
}:
app()
elif args[0] in {"cc", "component"}:
sys.argv = sys.argv[1:]
custom_component()
elif args[0] in {"build", "dev", "create", "show", "publish", "install"}:
try:
error = f"gradio {args[0]} is not a valid command. Did you mean `gradio cc {args[0]}` or `gradio component {args[0]}`?."
raise ValueError(error)
except ValueError:
console = Console()
console.print_exception()
elif args[0] in {"upload-mcp"}:
upload_mcp(args[1], args[2])
elif args[0] == "--vibe":
import os
from pathlib import Path
os.environ["GRADIO_VIBE_MODE"] = "1"
analytics.vibe_analytics()
demo_path = Path("demo.py") if len(args) == 1 else Path(args[1])
if not demo_path.exists():
template_content = """import gradio as gr
with gr.Blocks() as demo:
pass
demo.launch()"""
with open(demo_path, "w") as f:
f.write(template_content)
print(f"Created {demo_path} with default Gradio template.")
print(
"\n⚠️ WARNING: Vibe editor mode is enabled. Anyone who can access the Gradio endpoint can modify files and run arbitrary code on the host machine. Use with caution!\n"
)
hf_login()
sys.argv = ["gradio", str(demo_path)]
typer.run(reload)
else:
typer.run(reload)