@@ -179,19 +179,24 @@ def deploy(
179179 if not description :
180180 description = config .get ("description" , None )
181181
182- # resolve the project id from the project name.
182+ project_id = hosting .normalize_project_id (project_id )
183+
183184 if project_name and not project_id :
184185 result = hosting .search_project (
185186 project_name , client = authenticated_client , interactive = interactive
186187 )
187- project_id = result .get ("id" ) if result else None
188+ project_id = hosting .normalize_project_id (result .get ("id" )) if result else None
189+
190+ selected_project_id = hosting .get_selected_project ()
188191
192+ validated_project : dict [str , Any ] | None = None
189193 try :
190- # check if provided project exists.
194+ if not project_id :
195+ project_id = selected_project_id
191196 if project_id :
192- hosting .get_project (project_id , client = authenticated_client )
193- else :
194- project_id = hosting . get_selected_project ( )
197+ validated_project = hosting .get_project (
198+ project_id , client = authenticated_client
199+ )
195200 except httpx .HTTPStatusError as ex :
196201 try :
197202 console .error (ex .response .json ().get ("detail" ))
@@ -210,7 +215,7 @@ def deploy(
210215 if app_name and not app_id :
211216 search_project_id = project_id
212217 if not interactive and not project and not search_project_id :
213- search_project_id = hosting . get_selected_project ()
218+ search_project_id = selected_project_id
214219 elif interactive and not project :
215220 search_project_id = None
216221
@@ -230,16 +235,13 @@ def deploy(
230235 raise click .exceptions .Exit (1 ) from ex
231236
232237 if app and interactive and not project and not app_id :
233- default_project_id = hosting . get_selected_project ()
238+ default_project_id = selected_project_id
234239 app_project_id = app .get ("project_id" )
235240
236241 if app_project_id and (
237242 not default_project_id or app_project_id != default_project_id
238243 ):
239- app_project = hosting .get_project (
240- app_project_id , client = authenticated_client
241- )
242- app_project_name = app_project .get ("name" , "Unknown" )
244+ app_project_name = (app .get ("project" ) or {}).get ("name" ) or app_project_id
243245 if (
244246 console .ask (
245247 f"Deploy to app '{ app ['name' ]} ' in project '{ app_project_name } '?" ,
@@ -262,55 +264,40 @@ def deploy(
262264 )
263265 == "y"
264266 ):
265- # Check if we need confirmation for deploying to non-default project
266267 if not project :
267- default_project_id = hosting .get_selected_project ()
268- if not default_project_id :
269- try :
270- if project_id :
271- target_project = hosting .get_project (
272- project_id , client = authenticated_client
273- )
274- project_name = target_project .get ("name" , "Unknown" )
275- else :
276- token = hosting .get_existing_access_token ()
277- default_project_id = hosting .get_default_project (
278- authenticated_client
268+ needs_confirmation = not selected_project_id or (
269+ project_id and project_id != selected_project_id
270+ )
271+ if needs_confirmation :
272+ if project_id :
273+ project_display_name = (
274+ (
275+ validated_project .get ("name" )
276+ if validated_project
277+ else None
279278 )
280- if default_project_id :
281- default_project = hosting .get_project (
282- default_project_id , client = authenticated_client
283- )
284- project_name = default_project .get (
285- "name" , "Default Project"
286- )
287- else :
288- project_name = "Default Project"
289- except Exception :
290- project_name = "Unknown"
291-
292- if (
293- console .ask (
294- f"Create and deploy app '{ app_name } ' in project '{ project_name } '?" ,
295- choices = ["y" , "n" ],
296- default = "y" ,
279+ or project_name
280+ or project_id
297281 )
298- != "y"
299- ):
300- console .info ("Deployment cancelled." )
301- raise click .exceptions .Exit (0 )
302- elif project_id and project_id != default_project_id :
303- try :
304- target_project = hosting .get_project (
305- project_id , client = authenticated_client
282+ else :
283+ project_display_name = "your default project"
284+ fallback_project_id = hosting .get_default_project (
285+ authenticated_client
306286 )
307- project_name = target_project .get ("name" , "Unknown" )
308- except Exception :
309- project_name = "Unknown"
287+ if fallback_project_id :
288+ try :
289+ fallback_project = hosting .get_project (
290+ fallback_project_id , client = authenticated_client
291+ )
292+ project_display_name = (
293+ fallback_project .get ("name" ) or project_display_name
294+ )
295+ except Exception :
296+ pass
310297
311298 if (
312299 console .ask (
313- f"Create and deploy app '{ app_name } ' in project '{ project_name } '?" ,
300+ f"Create and deploy app '{ app_name } ' in project '{ project_display_name } '?" ,
314301 choices = ["y" , "n" ],
315302 default = "y" ,
316303 )
0 commit comments