Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -547,6 +547,40 @@ def execute_code(query: str):
|
|
547 |
# ------------------------
|
548 |
# 6) 데모 클래스
|
549 |
# ------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
550 |
|
551 |
class Demo:
|
552 |
def __init__(self):
|
@@ -880,11 +914,8 @@ with gr.Blocks(css_paths=["app.css"], theme=theme) as demo:
|
|
880 |
)
|
881 |
gr.HTML('<div class="help-text">💡 원하는 게임의 설명을 입력하세요. 예: "테트리스 게임 제작해줘."</div>')
|
882 |
|
883 |
-
|
884 |
-
|
885 |
-
value="", # 첫 화면은 비워 두기
|
886 |
-
visible=False
|
887 |
-
)
|
888 |
|
889 |
|
890 |
# Code Drawer 열기/닫기
|
@@ -934,7 +965,11 @@ with gr.Blocks(css_paths=["app.css"], theme=theme) as demo:
|
|
934 |
outputs=[deploy_result_container]
|
935 |
)
|
936 |
|
937 |
-
|
|
|
|
|
|
|
|
|
938 |
|
939 |
# ------------------------
|
940 |
# 9) 실행
|
|
|
547 |
# ------------------------
|
548 |
# 6) 데모 클래스
|
549 |
# ------------------------
|
550 |
+
# ── deploy 버튼용 함수 새로 작성 ─────────────────────────────
|
551 |
+
def deploy_and_show(code_md: str):
|
552 |
+
# 1) 코드 정리 & 배포
|
553 |
+
clean = remove_code_block(code_md)
|
554 |
+
result = deploy_to_vercel(clean)
|
555 |
+
|
556 |
+
url_match = re.search(r"https?://[\\w-]+\\.vercel\\.app", result)
|
557 |
+
if url_match: # ── 성공 ──
|
558 |
+
url = url_match.group(0)
|
559 |
+
|
560 |
+
# ① 오른쪽 메시지(마크다운)
|
561 |
+
md = f"✅ **배포 완료!**\n\n➡️ [열기]({url})"
|
562 |
+
|
563 |
+
# ② 왼쪽 iframe
|
564 |
+
iframe = (
|
565 |
+
f"<iframe src='{url}' width='100%' height='920px' "
|
566 |
+
"style='border:none;'></iframe>"
|
567 |
+
)
|
568 |
+
|
569 |
+
# state_tab : 'render' 로 전환
|
570 |
+
return (
|
571 |
+
gr.update(value=md, visible=True), # deploy_result_container
|
572 |
+
iframe, # sandbox
|
573 |
+
gr.update(active_key='render') # state_tab
|
574 |
+
)
|
575 |
+
# ── 실패 ──
|
576 |
+
md = f"❌ **배포 실패**\n\n```\n{result}\n```"
|
577 |
+
return (
|
578 |
+
gr.update(value=md, visible=True),
|
579 |
+
None,
|
580 |
+
gr.update(active_key='empty')
|
581 |
+
)
|
582 |
+
|
583 |
+
|
584 |
|
585 |
class Demo:
|
586 |
def __init__(self):
|
|
|
914 |
)
|
915 |
gr.HTML('<div class="help-text">💡 원하는 게임의 설명을 입력하세요. 예: "테트리스 게임 제작해줘."</div>')
|
916 |
|
917 |
+
deploy_result_container = gr.Markdown(value="", visible=False)
|
918 |
+
|
|
|
|
|
|
|
919 |
|
920 |
|
921 |
# Code Drawer 열기/닫기
|
|
|
965 |
outputs=[deploy_result_container]
|
966 |
)
|
967 |
|
968 |
+
deploy_btn.click(
|
969 |
+
fn=deploy_and_show,
|
970 |
+
inputs=[code_output],
|
971 |
+
outputs=[deploy_result_container, sandbox, state_tab]
|
972 |
+
)
|
973 |
|
974 |
# ------------------------
|
975 |
# 9) 실행
|