44import re
55import time
66from typing import Optional
7- from rich import print
87
98import questionary
109import typer
10+ from rich import print
1111
1212from fastapi_ccli import GREEN , RED , github_fs_src , gitee_fs_src , github_ft_src , gitee_ft_src
1313from fastapi_ccli .utils .get_country import get_current_country
2020
2121def project_path_callback (project_path : str ) -> str :
2222 """
23- Custom project path
23+ Select project path...
2424
2525 :param project_path:
2626 :return:
@@ -37,7 +37,7 @@ def project_path_callback(project_path: str) -> str:
3737
3838def orm_style (orm : str ) -> str :
3939 """
40- orm stylization
40+ orm stylization...
4141
4242 :param orm:
4343 :return:
@@ -47,7 +47,7 @@ def orm_style(orm: str) -> str:
4747
4848def is_dns (dns : bool ) -> str :
4949 """
50- Whether to use dns
50+ Whether to use dns...
5151
5252 :param dns:
5353 :return:
@@ -64,69 +64,60 @@ def is_dns(dns: bool) -> str:
6464 continue
6565 rp = get_current_country (ip )
6666 if 'CN' in rp :
67- if 'Yes' in dns :
68- ending = GREEN
69- else :
70- ending = RED
67+ ending = GREEN if 'Yes' in dns else RED
7168 else :
72- if 'Yes' in dns :
73- ending = RED
74- else :
75- ending = GREEN
69+ ending = RED if 'Yes' in dns else GREEN
7670 return ending
7771
7872
7973def is_async_app (async_app : bool ) -> str :
8074 """
81- Whether to use async
75+ Whether to use async...
8276
8377 :param async_app:
8478 :return:
8579 """
86- if 'Yes' in async_app :
87- ending = GREEN
88- else :
89- ending = RED
80+ ending = GREEN if 'Yes' in async_app else RED
9081 return ending
9182
9283
9384def is_generic_crud (generic_crud : bool ) -> str :
9485 """
95- Whether to use generic crud
86+ Whether to use generic crud...
9687
9788 :param generic_crud:
9889 :return:
9990 """
100- if 'Yes' in generic_crud :
101- ending = GREEN
102- else :
103- ending = RED
91+ ending = GREEN if 'Yes' in generic_crud else RED
10492 return ending
10593
10694
10795def is_casbin (casbin : bool ) -> str :
10896 """
109- Whether to use rbac
97+ Whether to use rbac...
11098
11199 :param casbin:
112100 :return:
113101 """
114- if 'Yes' in casbin :
115- ending = GREEN
116- else :
117- ending = RED
102+ ending = GREEN if 'Yes' in casbin else RED
118103 return ending
119104
120105
121106@app_en_form .command (epilog = "Made by :beating_heart: wu-clan" )
122107def cloner (
108+ _version : Optional [bool ] = typer .Option (
109+ None ,
110+ "--version" ,
111+ '-V' ,
112+ help = "Print version information and quit"
113+ ),
123114 project_path : Optional [str ] = typer .Option (
124115 None ,
125116 "--path" ,
126117 "-p" ,
127118 callback = project_path_callback ,
128- help = "Project clone path, the default is ../fastapi_project, supports absolute path or relative path, "
129- "for example , Absolute path: D:\\ fastapi project , relative path: ../fastapi_project."
119+ help = "Project clone path, the default is ' ../fastapi_project' , supports absolute path or relative path, "
120+ "E.g. , Absolute path: D:\\ fastapi_project , relative path: ../fastapi_project."
130121 ),
131122):
132123 """
@@ -139,50 +130,49 @@ def cloner(
139130 orm = questionary .select ('Please select the orm you want to use:' , choices = ['SQLAlchemy' , 'Tortoise-ORM' ],
140131 default = 'SQLAlchemy' ),
141132 dns = questionary .select ('Do you want to use dns?' , choices = ['Yes' , 'No' ], default = 'No' ),
142- ).unsafe_ask ()
133+ ).ask ()
134+ if len (result_if ) == 0 :
135+ raise typer .Abort
143136 dns = is_dns (result_if ['dns' ])
144137 orm = orm_style (result_if ['orm' ])
145138 if 'SQLAlchemy' in orm :
146139 result = questionary .form (
147140 async_app = questionary .select ('Do you want to use async?' , choices = ['Yes' , 'No' ]),
148141 generic_crud = questionary .select ('Do you want to use generic crud?' , choices = ['Yes' , 'No' ]),
149- casbin = questionary .select ('Do you want to use rbac?' , choices = ['Yes' , 'No' ]),
150- ).unsafe_ask ()
142+ ).ask ()
143+ if len (result ) == 0 :
144+ raise typer .Abort
151145 async_app = is_async_app (result ['async_app' ])
152146 generic_crud = is_generic_crud (result ['generic_crud' ])
153147 casbin = None
154148 if 'True' in generic_crud :
155- casbin = is_casbin (result ['casbin' ])
149+ rbac = questionary .form (
150+ casbin = questionary .select ('Do you want to use rbac authentication?' , choices = ['Yes' , 'No' ])
151+ ).ask ()
152+ if len (rbac ) == 0 :
153+ raise typer .Abort
154+ if rbac ['casbin' ] == 'Yes' :
155+ casbin = is_casbin (rbac ['casbin' ])
156156 typer .echo ('Project name:' + project_name )
157157 typer .echo ('Use orm:' + orm )
158158 typer .echo ('Use dns:' + dns )
159159 typer .echo ('Use async:' + async_app )
160- typer .echo ('Use generics crud:' + generic_crud )
160+ typer .echo ('Use generic crud:' + generic_crud )
161161 if casbin :
162- typer .echo ('Use rbac:' + casbin )
163- if 'True' in dns :
164- src = get_sqlalchemy_app_src (
165- src = github_fs_src ,
166- async_app = async_app ,
167- generic_crud = generic_crud ,
168- casbin = casbin
169- )
170- else :
171- src = get_sqlalchemy_app_src (
172- src = gitee_fs_src ,
173- async_app = async_app ,
174- generic_crud = generic_crud ,
175- casbin = casbin
176- )
162+ typer .echo ('Use rbac authentication:' + casbin )
163+ source = github_fs_src if 'True' in dns else gitee_fs_src
164+ src = get_sqlalchemy_app_src (
165+ src = source ,
166+ async_app = async_app ,
167+ generic_crud = generic_crud ,
168+ casbin = casbin
169+ )
177170 __exec_clone (orm , src , path , path_style )
178171 else :
179172 typer .echo ('Project name:' + project_name )
180173 typer .echo ('Use orm:' + orm )
181174 typer .echo ('Use dns:' + dns )
182- if 'True' in dns :
183- src = github_ft_src
184- else :
185- src = gitee_ft_src
175+ src = github_ft_src if 'True' in dns else gitee_ft_src
186176 __exec_clone (orm , src , path , path_style )
187177
188178
@@ -211,4 +201,3 @@ def __exec_clone(orm: str, src: str, path: str, path_style: str) -> None:
211201 else :
212202 print ('✅ The repository was cloned successfully' )
213203 typer .echo (f'Please go to the directory { path_style } to view' )
214- raise typer .Abort ()
0 commit comments