fix: 修复运行错误

main
NoahLan 1 week ago
parent 2afc49d61c
commit 22c3c455cd

@ -156,11 +156,7 @@ def handle_run(args: argparse.Namespace) -> int:
ctx = require_project() ctx = require_project()
env_name, port = parse_run_args(args.env_or_port, args.port) env_name, port = parse_run_args(args.env_or_port, args.port)
env = {"APP_ENV": env_name} env = {"APP_ENV": env_name}
cmd = build_run_cmd(ctx, port)
if ctx.kind == "framework":
cmd = ["uv", "run", "uvicorn", "iti.app:create_app", "--factory", "--port", port]
else:
cmd = ["uv", "run", "uvicorn", "main:app", "--port", port]
if env_name == "prod": if env_name == "prod":
cmd.extend(["--host", "0.0.0.0"]) cmd.extend(["--host", "0.0.0.0"])
@ -170,6 +166,14 @@ def handle_run(args: argparse.Namespace) -> int:
return run(cmd, ctx.root, extra_env=env) return run(cmd, ctx.root, extra_env=env)
def build_run_cmd(ctx: ProjectContext, port: str) -> list[str]:
if ctx.kind == "framework":
cmd = ["uv", "run", "python", "-m", "uvicorn", "iti.app:create_app", "--factory", "--port", port]
else:
cmd = ["uv", "run", "python", "-m", "uvicorn", "main:app", "--port", port]
return cmd
def handle_migrate(args: argparse.Namespace) -> int: def handle_migrate(args: argparse.Namespace) -> int:
ctx = require_project() ctx = require_project()
action = args.action action = args.action

@ -7,6 +7,7 @@ import pytest
from iticli.cli import ( from iticli.cli import (
ProjectContext, ProjectContext,
alembic_base_cmd, alembic_base_cmd,
build_run_cmd,
build_parser, build_parser,
detect_project, detect_project,
ensure_uv_no_sources_package, ensure_uv_no_sources_package,
@ -138,6 +139,15 @@ def test_parse_run_args_accepts_env_and_port() -> None:
assert parse_run_args("default", None) == ("dev", "8000") assert parse_run_args("default", None) == ("dev", "8000")
def test_build_run_cmd_uses_python_module() -> None:
framework = ProjectContext(Path("."), "framework", {}, False)
business = ProjectContext(Path("."), "business", {}, False)
assert build_run_cmd(framework, "8000")[:5] == ["uv", "run", "python", "-m", "uvicorn"]
assert "iti.app:create_app" in build_run_cmd(framework, "8000")
assert "main:app" in build_run_cmd(business, "8000")
def test_extract_message_accepts_remainder_flags() -> None: def test_extract_message_accepts_remainder_flags() -> None:
rest = ["-m", "alice add order table", "--head", "head"] rest = ["-m", "alice add order table", "--head", "head"]

Loading…
Cancel
Save