From 8e23edcb903346de88bb977c6dc7846016daec9c Mon Sep 17 00:00:00 2001 From: NoahLan <6995syu@163.com> Date: Fri, 22 May 2026 18:16:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20postgresql=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + iticli/cli.py | 8 ++++++++ tests/test_cli.py | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/README.md b/README.md index 64ce4c3..b3b5af6 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ iticli release v0.2.5 ```bash iticli create my-business-app iticli create --with-system my-system-app +iticli create --database postgresql my-postgres-app ``` 使用当前框架工作区作为模板源: diff --git a/iticli/cli.py b/iticli/cli.py index 9729369..9ad8ff9 100644 --- a/iticli/cli.py +++ b/iticli/cli.py @@ -87,6 +87,12 @@ def build_parser() -> argparse.ArgumentParser: create_parser.add_argument("--target", help="target directory, defaults to project_name") create_parser.add_argument("--slug", help="distribution/project slug, defaults to target basename") create_parser.add_argument("--display-name", help="business project display name") + create_parser.add_argument( + "--database", + choices=["mysql", "postgresql"], + default=None, + help="database dialect rendered into the project, defaults to template value", + ) create_parser.add_argument("--source", help="Copier template source, defaults to iTi-Flask private Git") create_parser.add_argument("--ref", default=DEFAULT_COPIER_REF, help="Copier source ref, defaults to HEAD") create_parser.add_argument("--local", action="store_true", help="use current iTi-Flask framework checkout as template source") @@ -229,6 +235,8 @@ def handle_create(args: argparse.Namespace) -> int: "-d", f"include_system={str(args.with_system).lower()}", ] + if args.database is not None: + cmd.extend(["-d", f"database_dialect={args.database}"]) if args.framework_git: cmd.extend(["-d", f"framework_git={args.framework_git}"]) if args.framework_tag is not None: diff --git a/tests/test_cli.py b/tests/test_cli.py index 61a3138..5298fef 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -176,6 +176,15 @@ def test_parser_exposes_update_instead_of_sync() -> None: parser.parse_args(["update", "flask"]) +def test_parser_accepts_create_database_dialect() -> None: + parser = build_parser() + + args = parser.parse_args(["create", "--database", "postgresql", "demo"]) + + assert args.command == "create" + assert args.database == "postgresql" + + def test_version_helpers() -> None: assert normalize_version("v1.2.3") == "1.2.3" assert version_is_newer("1.2.3", "1.2.4") is True